40 lines
No EOL
1.1 KiB
Python
40 lines
No EOL
1.1 KiB
Python
import json
|
|
import asyncio
|
|
import websockets
|
|
|
|
true = True
|
|
false = False
|
|
null = None
|
|
|
|
clients = set()
|
|
mtserver = null
|
|
|
|
async def serve(websocket):
|
|
global mtserver
|
|
clients.add(websocket)
|
|
try:
|
|
async for message in websocket:
|
|
try:
|
|
print(f"Received: {message}")
|
|
data = json.loads(message)
|
|
if data["type"] == "chat":
|
|
for c in clients:
|
|
if c != websocket: await c.send(json.dumps({"type": "chat", "name": data["sender"], "msg": data["msg"]}))
|
|
elif data["type"] == "online":
|
|
mtserver = websocket
|
|
for c in clients:
|
|
if c != mtserver: await c.send(json.dumps({"type": "online"}))
|
|
else:
|
|
pass
|
|
print(f"Sent: {message}")
|
|
except:
|
|
continue
|
|
finally:
|
|
if mtserver == websocket: mtserver = null
|
|
clients.remove(websocket)
|
|
|
|
async def main():
|
|
server = await websockets.serve(serve, "", 8001)
|
|
await server.wait_closed()
|
|
|
|
asyncio.run(main()) |