def get(self, request):
peername = request.transport.get_extra_info('peername')
if peername is not None:
host, port = peername
ws_id = "{}:{}".format(host, port)
ws = web.WebSocketResponse()
await ws.prepare(request)
print('WS connection open by', ws_id)
WebsocketHandler.socket_list.append((ws, ws_id))
msg = '{"action":"online_user", "data" : [' + ','.join(['"' + _ws[1] + '"' for _ws in WebsocketHandler.socket_list]) + ']}'
core.notify_all(msg=msg)
try:
async for msg in ws:
if msg.tp == aiohttp.MsgType.text:
if msg.data == 'close':
print ('CLOSE MESSAGE RECEIVED')
await ws.close()
else:
# Analyse message sent by client and send response if needed
data = msg.json()
if data["action"] == "user_info":
print("WebsocketHandler", data["action"])
pass
elif msg.tp == aiohttp.MsgType.error:
print('ws connection closed with exception %s' % ws.exception())
finally:
print('WS connection closed for', ws_id)
WebsocketHandler.socket_list.remove((ws, ws_id))
return ws
评论列表
文章目录