Websocket 自动生成异步IO客户端参数

Websocket 自动生成异步IO客户端参数,websocket,python-asyncio,autobahn,Websocket,Python Asyncio,Autobahn,免责声明:这是我第一次使用WS和MQTT,所以结构可能是错误的。请指出这一点 我使用autoban和asyncio通过WebSocket接收消息并将消息发送到HA(HomeAssistant)实例 一旦python代码接收到消息,我希望使用MQTT将它们转发到AWS IoT服务。这种交流需要双向进行 我已经将此工作作为一个脚本,其中所有内容都在一个文件中浮动。 我试图在班级结构中完成这项工作,这就是我最后的工作将如何完成 为此,我需要我的WebSocketClientProtocol访问AWSI

免责声明:这是我第一次使用WS和MQTT,所以结构可能是错误的。请指出这一点

我使用autoban和asyncio通过WebSocket接收消息并将消息发送到HA(HomeAssistant)实例

一旦python代码接收到消息,我希望使用MQTT将它们转发到AWS IoT服务。这种交流需要双向进行

我已经将此工作作为一个脚本,其中所有内容都在一个文件中浮动。 我试图在班级结构中完成这项工作,这就是我最后的工作将如何完成

为此,我需要我的WebSocketClientProtocol访问AWSIoTClient
.publish
.subscribe
。虽然WebSocketClientProtocol初始化是通过工厂完成的,但因此我不知道如何向它传递任何参数。例如:

if __name__ == "__main__":

    aws_iot_client = AWSIoTClient(...)

    factory = WebSocketServerFactory('ws://localhost:8123/api/websocket')
    factory.protocol = HomeAssistantProtocol
如何将aws_iot_客户端传递给HomeAssistantProtocol


我在WebSocketClientProtocol子类中找到了使用
self.factory
实现这一点的Autobahn-Twisted示例,但这对asyncio不可用。

我发现调用run\u直到\u完成返回
传输,协议
实例,这样我就可以将AWS客户端传递给它

loop = asyncio.get_event_loop()
coro = loop.create_connection(factory, '127.0.0.1', 9000)
transport, protocol = loop.run_until_complete(coro)