htmx-patterns/htmx_patterns/websocket/router.py
Waylon S. Walker e181f57a91 wip
2024-12-11 09:17:38 -06:00

39 lines
1.1 KiB
Python

from fastapi import APIRouter, Request, WebSocket, WebSocketDisconnect
from htmx_patterns.websocket.dependencies import ConnectionManager
from htmx_patterns.config import get_config
websocket_router = APIRouter(prefix="/websocket", tags=["Websocket"])
manager = ConnectionManager()
config = get_config()
@websocket_router.get("/")
def websocket_index(request: Request):
return config.templates.TemplateResponse(
"websocket/index.html", {"request": request}
)
@websocket_router.websocket("/")
async def websocket_endpoint(
websocket: WebSocket,
):
await manager.connect(websocket)
await manager.send_personal_message("Hello", websocket)
try:
while True:
data = await websocket.receive_text()
await manager.send_personal_message(f"Received:{data}", websocket)
# import time
#
# time.sleep(1)
# data = "hello"
# await manager.send_personal_message(f"Received:{data}", websocket)
#
except WebSocketDisconnect:
manager.disconnect(websocket)
await manager.send_personal_message("Bye!!!", websocket)