from fastapi import FastAPI, WebSocket, WebSocketDisconnect, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from manager import ConnectionManager

manager = ConnectionManager()
app = FastAPI()
templates = Jinja2Templates(directory="./templates")

@app.get("/")
async def index(request: Request, response_class=HTMLResponse):
    return templates.TemplateResponse('index.html', {'request': request})

@app.websocket("/ws/{client_id}")
async def websocket_endpoint(websocket: WebSocket, client_id: int):
    await manager.connect(websocket)
    try:
        while True:
            data = await websocket.receive_text()
            await manager.send_personal_message(f"You wrote: {data}", websocket)
            await manager.broadcast(f"Client #{client_id} says: {data}")
    except WebSocketDisconnect:
        manager.disconnect(websocket)
        await manager.broadcast(f"Client #{client_id} left the chat")
예제 #2
0
 def __init__(self, dataprotocl=DataPackProtoc()):
     """初始化
     """
     self.service = None
     self.connmanager = ConnectionManager()
     self.dataprotocl = dataprotocl
예제 #3
0
 def __init__(self, wsuri):
     WebSocketServerFactory.__init__(self, wsuri)
     self.connmanager = ConnectionManager()
     self.gamemanger_A = Gamemanger()
     self.tick()