38 lines
1,018 B
Python
38 lines
1,018 B
Python
|
import asyncio
|
||
|
import websockets
|
||
|
|
||
|
CONNECTIONS = set()
|
||
|
EAS_MESSAGE = ""
|
||
|
TOKEN = "o6LD27y63M0b360Pjd5B"
|
||
|
|
||
|
|
||
|
async def handle(websocket):
|
||
|
global EAS_MESSAGE
|
||
|
# register clients
|
||
|
if websocket not in CONNECTIONS:
|
||
|
CONNECTIONS.add(websocket)
|
||
|
async for message in websocket:
|
||
|
# parse message
|
||
|
if message == "HI":
|
||
|
# new client said hi
|
||
|
if message == "":
|
||
|
await websocket.send("HI")
|
||
|
else:
|
||
|
await websocket.send(f"HI {EAS_MESSAGE}")
|
||
|
if message.startswith(f"MSG {TOKEN} "):
|
||
|
# broadcast from vee
|
||
|
EAS_MESSAGE = message.replace(f"MSG {TOKEN} ", "")
|
||
|
websockets.broadcast(CONNECTIONS, f"MSG {EAS_MESSAGE}")
|
||
|
if message.startswith(f"CLEAR {TOKEN} "):
|
||
|
# clear
|
||
|
EAS_MESSAGE = ""
|
||
|
await websocket.send(f"OK")
|
||
|
|
||
|
|
||
|
async def main():
|
||
|
async with websockets.serve(handle, "0.0.0.0", 8765):
|
||
|
await asyncio.Future() # run forever
|
||
|
|
||
|
|
||
|
asyncio.run(main())
|