【问题标题】:Autoban asyncio client argumentsAutoban asyncio 客户端参数
【发布时间】:2017-11-17 17:43:47
【问题描述】:

免责声明:这是我第一次使用 WS 和 MQTT,因此结构可能有误。请指出这一点。

我正在使用带有 asyncio 的 autoban 通过 websockets 接收和发送消息到 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_client 传递给 HomeAssistantProtocol?

我在 WebSocketClientProtocol 子类上找到了使用 self.factory 执行此操作的 Autobahn - Twisted 示例,但这不适用于 asyncio。

【问题讨论】:

    标签: websocket python-asyncio autobahn


    【解决方案1】:

    我发现调用 run_until_complete 会返回 transport, protocol 实例,因此我可以将 AWS 客户端传递给它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多