gpt4 book ai didi

python - 使用 Twisted/Autobahn Websockets 编写 "interactive"客户端

转载 作者:太空狗 更新时间:2023-10-29 21:50:11 27 4
gpt4 key购买 nike

也许我在 Twisted 的异步设计中遗漏了一些东西,但我似乎无法找到“外部”调用 sendMessage() 方法的方法。我的意思是,发送消息而不仅仅是在 Twisted/AutobahnWebsockets 的回调方法中(比如在 onOpen 或在 onMessage() 从服务器接收数据时)

当然我可以启动一个线程并调用 my_protocol_instance.sendMessage("hello") 但这会破坏异步设计的所有目的吗?

在一个具体的例子中,我需要一个顶级包装器类来打开连接并管理它,并且每当我需要时调用 my_class.send_my_toplevel_message(msg)。我该如何实现?

希望我的解释很清楚。

谢谢

最佳答案

为什么需要一个线程来启动 protocolInstance.sendMessage() ?这可以在正常的 react 器循环中完成。

twisted 的核心是 reactor,当你认为 twisted 本身 react 性时,它可以更容易地看待事物 - 意味着它做某事作为对其他事物的 react (响应)。

现在我假设您正在谈论的线程也是由于某些事件或事件或状态而在调用 sendMessage 时创建和创建的。我很难想象你只需要突然发送一条消息而没有任何反应的情况。

但是,如果存在应触发 sendMessage 的事件,则无需在线程中调用它:只需使用扭曲的机制来捕获该事件,然后从该特定事件的回调中调用 sendMessage。

现在来看您的具体示例:您能否具体说明“每当我需要”在此问题的上下文中的确切含义?来自另一个连接的输入?来自用户的输入?循环事件?

关于python - 使用 Twisted/Autobahn Websockets 编写 "interactive"客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899515/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com