【发布时间】:2018-04-28 09:44:56
【问题描述】:
async def relayHandler(request):
print('Websocket connection starting')
ws = aiohttp.web.WebSocketResponse(autoclose=True)
await ws.prepare(request)
print('Websocket connection ready')
async for msg in ws:
print(msg)
if msg.type == aiohttp.WSMsgType.TEXT:
print(msg.data)
if msg.data == 'close':
await ws.close()
else:
await ws.send_str(msg.data + '/answer')
elif msg.type == aiohttp.WSMsgType.ERROR:
print('ws connection closed with exception %s' %ws.exception())
print('Websocket connection closed')
return ws
这是我的 websocket 处理程序,它在 asyncio 之上使用 aiohttp。问题是如果我断开客户端 wifi 连接,它不会检测到连接丢失。我也尝试使用 Websockets 模块,但同样的事情发生了。但是当客户端在本地主机上时,它工作得很好。 造成这种情况的主要原因是什么,如果有人可以解释如何在 asyncio 中正确捕获网络异常。
【问题讨论】:
标签: python-3.x websocket python-asyncio