我修改了一个我在这里找到的websocket客户端示例,如下所示:
import asyncio
import websockets
async def hello(messages):
async with websockets.connect('ws://localhost:8765') as websocket:
for m in ('msg1', 'msg2'):
await websocket.send(m)
print(f"> {m}")
greeting = await websocket.recv()
print(f"< {greeting}")
asyncio.get_event_loop().run_until_complete(hello(['name1', 'name2']))
但是现在,只要第二个send()
被执行,就会出现异常:
Traceback (most recent call last):
File "ws-client.py", line 44, in <module>
main()
File "ws-client.py", line 41, in main
asyncio.get_event_loop().run_until_complete(hello(['name1', 'name2']))
File "/usr/lib64/python3.6/asyncio/base_events.py", line 468, in run_until_complete
return future.result()
File "ws-client.py", line 35, in hello
greeting = await websocket.recv()
File "/home/frans/.local/lib/python3.6/site-packages/websockets/protocol.py", line 350, in recv
yield from self.ensure_open()
File "/home/frans/.local/lib/python3.6/site-packages/websockets/protocol.py", line 512, in ensure_open
self.close_code, self.close_reason) from self.transfer_data_exc
websockets.exceptions.ConnectionClosed: WebSocket connection is closed: code = 1000 (OK), no reason
我对asyncio
不是很了解 - 请问有人能告诉我哪里有问题吗?
我也使用了示例中的服务器代码...