def get(self):
self.logger = self.request.app.logger
self.websocket = web.WebSocketResponse()
self.client = BasicClient(self.websocket,
ip_address=get_ip_address_from_request(self.request))
await self.websocket.prepare(self.request)
self.logger.info('WebSocket client connected from {}'.format(self.client.ip_address))
async for msg in self.websocket:
if msg.type == WSMsgType.TEXT:
self.logger.info('Got WebSocket data: {}'.format(log_short(msg.data)))
payload = json.loads(msg.data)
if payload['type'] == 'rpc':
response = await self.handle_rpc_call(payload)
self.logger.info('Sending WebSocket data: {}'.format(log_short(response)))
elif msg.type == WSMsgType.ERROR:
self.logger.error('WebSocket error: {}'.format(self.websocket.exception()))
else:
self.logger.info('WebSocket connection closed')
if self.client.authenticated:
await self.request.app['ps'].unsubscribe_all(self.client)
del self.request.app['clients'][self.client.id]
return self.websocket
评论列表
文章目录