MultiServer: update to websockets 10 and implement new websockets.broadcast
This commit is contained in:
parent
d41fce6f91
commit
411d4434a3
|
@ -150,17 +150,33 @@ class Context:
|
||||||
logging.info(f"Outgoing message: {msg}")
|
logging.info(f"Outgoing message: {msg}")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
async def broadcast_send_encoded_msgs(self, endpoints: typing.Iterable[Endpoint], msg: str) -> bool:
|
||||||
|
sockets = []
|
||||||
|
for endpoint in endpoints:
|
||||||
|
if endpoint.socket and endpoint.socket.open:
|
||||||
|
sockets.append(endpoint.socket)
|
||||||
|
try:
|
||||||
|
websockets.broadcast(sockets, msg)
|
||||||
|
except RuntimeError:
|
||||||
|
logging.exception("Exception during broadcast_send_encoded_msgs")
|
||||||
|
else:
|
||||||
|
if self.log_network:
|
||||||
|
logging.info(f"Outgoing broadcast: {msg}")
|
||||||
|
return True
|
||||||
|
|
||||||
def broadcast_all(self, msgs):
|
def broadcast_all(self, msgs):
|
||||||
msgs = self.dumper(msgs)
|
msgs = self.dumper(msgs)
|
||||||
for endpoint in self.endpoints:
|
endpoints = (endpoint for endpoint in self.endpoints if endpoint.auth)
|
||||||
if endpoint.auth:
|
asyncio.create_task(self.broadcast_send_encoded_msgs(endpoints, msgs))
|
||||||
asyncio.create_task(self.send_encoded_msgs(endpoint, msgs))
|
|
||||||
|
|
||||||
def broadcast_team(self, team, msgs):
|
def broadcast_team(self, team: int, msgs):
|
||||||
msgs = self.dumper(msgs)
|
msgs = self.dumper(msgs)
|
||||||
for client in self.endpoints:
|
endpoints = (endpoint for endpoint in self.endpoints if endpoint.auth and endpoint.team == team)
|
||||||
if client.auth and client.team == team:
|
asyncio.create_task(self.broadcast_send_encoded_msgs(endpoints, msgs))
|
||||||
asyncio.create_task(self.send_encoded_msgs(client, msgs))
|
|
||||||
|
def broadcast(self, endpoints: typing.Iterable[Endpoint], msgs):
|
||||||
|
msgs = self.dumper(msgs)
|
||||||
|
asyncio.create_task(self.broadcast_send_encoded_msgs(endpoints, msgs))
|
||||||
|
|
||||||
async def disconnect(self, endpoint):
|
async def disconnect(self, endpoint):
|
||||||
if endpoint in self.endpoints:
|
if endpoint in self.endpoints:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
colorama>=0.4.4
|
colorama>=0.4.4
|
||||||
websockets>=9.1
|
websockets>=10.0
|
||||||
PyYAML>=5.4.1
|
PyYAML>=5.4.1
|
||||||
fuzzywuzzy>=0.18.0
|
fuzzywuzzy>=0.18.0
|
||||||
prompt_toolkit>=3.0.20
|
prompt_toolkit>=3.0.20
|
||||||
|
|
Loading…
Reference in New Issue