我正试图创建一个从本质上讲是websocket到websocket的桥接器/网关。该服务器应接受8765上的公共连接,并将消息转发到7777上等待的另一个内部服务器,反之亦然。
我的问题是如何监控来自或套接字的到达消息?下面的代码只是在公共套接字消息上循环。我不知道如何同时观看publicsock和publicsock.privatesock。如果任何一个套接字发生了问题,我需要将消息转发到另一侧。
最初来自http://aaugustin.github.io/websockets/
import asyncio
import websockets
@asyncio.coroutine
def handler(publicsock, path):
publicsock.privatesock = yield from websockets.connect('ws://localhost:7777/')
while True:
message = yield from publicsock.recv()
if message is None:
break
yield from processPublicMessage(publicsock, message)
publicsock.privatesock.close()
start_server = websockets.serve(handler, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
您可以将asyncio.wait与FIRST_COMPLETED
一起使用,以等待两个未来的结果。