正在等待对两个Websocket进行recv()操作



我正试图创建一个从本质上讲是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一起使用,以等待两个未来的结果。

最新更新