问题描述
我想从位于NAT之后的PC上的Web浏览器向也位于NAT之后的RaspBerry Pi发送消息,反之亦然。两台设备都可以看到具有公共IP的服务器。我试图用python websockets编写以下内容:
import asyncio
import websockets
import os
import logging
websocketPi = []
websocketHTML = []
async def receivePi(websocket,path):
global websocketPi
if websocket not in websocketPi:
print(websocket)
websocketPi.append(websocket)
data = await websocket.recv()
print(f"Received PI: {data}")
for wsHTML in websocketHTML:
try:
await wsHTML.send(data)
except:
websocketHTML.remove(wsHTML)
async def receiveHTML(websocket,path):
global websocketHTML
if websocket not in websocketHTML:
print(websocket)
websocketHTML.append(websocket)
data = await websocket.recv()
print(f"Received HTML: {data}")
for wsPi in websocketPi:
try:
await wsPi.send(data)
except:
websocketPi.remove(wsPi)
serverHTML = websockets.serve(receiveHTML,"127.0.0.1",8765)
serverPi = websockets.serve(receivePi,7654)
asyncio.get_event_loop().run_until_complete(serverPi)
asyncio.get_event_loop().run_until_complete(serverHTML)
asyncio.get_event_loop().run_forever()
这部分起作用,有时消息不会传递到目标。我的问题是两个def中都有'''websocket'''对象。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)