我试图理解WebSocket和aiohttp是如何工作的,所以我运行了来自docunentation www.example.com的以下代码https://docs.aiohttp.org/en/stable/web_quickstart.html#websockets:
async def websocket_handler(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.type == aiohttp.WSMsgType.TEXT:
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
app = web.Application()
app.add_routes([web.get('/ws', websocket_handler)])
asyncio.run(web.run_app(app))
我用curl检验的结果是:
curl http://0.0.0.0:8080/ws
我看到的信息是:
No WebSocket UPGRADE hdr: None
Can "Upgrade" only to "WebSocket"
Firefox显示了相同的消息。
我做错什么了?也许有人知道问题出在哪里?
1条答案
按热度按时间b1uwtaje1#
如果有人还不明白为什么不能用
websocat
测试上面给出的WebSocket示例,那么值得注意的是,当前版本(v1.11.0
)通过这意味着
localhost
没有被正确解析。如果你用
127.0.0.1
代替,它会工作得很好。例如: