问题描述
我正在尝试创建一个websocket服务器,该服务器将接受来自一个客户端说A的消息并将其存储在队列中。然后有另一个客户端B将连接到websocket以读取将由队列弹出的消息。
要识别客户端,我正在使用不同的路径编辑请求url。下面是我的代码:
import asyncio
import websockets
from queue import Queue
q = Queue(maxsize = 10)
async def consumer_handler(websocket,path):
if path=="/":
async for message in websocket:
await consumer(message)
async def producer_handler(websocket,path):
if path=="/read":
while True:
message = await producer()
await websocket.send(message)
async def consumer(message):
q.put(message)
async def producer():
return q.get()
async def handler(websocket,path):
loop = asyncio.get_event_loop()
producer_task = loop.create_task(producer_handler(websocket,path))
consumer_task = loop.create_task(consumer_handler(websocket,path))
start_server = websockets.serve(handler,"localhost",8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
它不接受消息,客户端B也无法读取消息。
没有websocket.recv()行,我不明白它如何获取消息?
我确定文档中的生产者,消费者和处理程序方法的定义。
另外,当尝试从客户端B端重新打开连接时,它会挂在“打开”状态。
我是websocket编码的新手,请指导我哪里出错了
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)