minetest-websockets/server.py
2025-06-01 00:41:02 +00:00

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())