如何正确设置Pyramid和ZeroMQ以提供简单的聊天/消息接口?
我正在尝试构建一个使用ZeroMQ的Pyramid应用,目的是提供一个非常简单的聊天/消息界面,但我似乎无法搞清楚正确的设置和工作流程。
从我的角度来看,这个结构看起来相当简单,最基本的形式可以用两个Pyramid的“视图”或“路由”来描述:
- 客户端的SSE“显示消息”视图:这个视图/路由会保持对客户端开放(在客户端使用服务器发送事件,服务器端使用Pyramid的
response.app_iter
),监听来自ZeroMQ的消息,并在收到消息时将其“传递”给客户端。 - “提交新消息”视图:这个视图/路由会接收包含单条消息数据的POST请求,然后将这些数据传递给ZeroMQ,以便在SSE视图中接收并显示给任何正在监听的客户端。
然而,不知为何,我一直无法找到实现这个功能的正确方法。谷歌上关于0MQ和Pyramid的资料似乎很少,而我自己尝试的各种方法要么导致Python/Pyramid的线程/进程问题,要么就是0MQ根本无法发送或接收任何消息(这可能与我的线程问题有关)。
那么,如何才能正确地用Pyramid构建这样的应用呢?
附言:你可以假设任何版本的Python/Pyramid等在你的回答中。关键是要得到一个如描述所示的可用的东西。