34 lines
993 B
Python
34 lines
993 B
Python
import websockets
|
|
import asyncio
|
|
|
|
connected = set()
|
|
|
|
async def handler(websocket):
|
|
# Register.
|
|
connected.add(websocket)
|
|
try:
|
|
while True:
|
|
message = await websocket.recv()
|
|
print(message)
|
|
await broadcast(message)
|
|
except websockets.ConnectionClosedOK:
|
|
print("Client disconnected")
|
|
finally:
|
|
connected.remove(websocket)
|
|
|
|
async def broadcast(message):
|
|
if connected: # asyncio.wait doesn't accept an empty list
|
|
await asyncio.wait([ws.send(message) for ws in connected])
|
|
|
|
async def sendClientId():
|
|
if connected: # asyncio.wait doesn't accept an empty list
|
|
await asyncio.wait([ws.send(message) for ws in connected])
|
|
|
|
async def main():
|
|
async with websockets.serve(handler, "0.0.0.0", 8001):
|
|
await asyncio.Future() # run forever
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|
|
|
|
#https://websockets.readthedocs.io/en/stable/reference/sync/server.html#websockets.sync.server.serve |