可以双向使用pyzmq pub / sub套接字吗?

时间:2014-02-05 00:40:43

标签: python sockets zeromq pyzmq

我正在使用pyzmq pub/sub socket服务器向客户端订阅者发布通知。它工作得很好,但我有一个问题:

有没有办法使用同一个套接字将信息发送回服务器?或者我需要一个单独的插座吗?

用例:我只想让服务器查看谁主动订阅通知,所以我希望我可以允许客户端定期发送“心跳”消息。我有一个用例,如果没有客户端正在监听,我希望服务器产生一个。 (这是一个仅使用localhost的多进程系统。)

1 个答案:

答案 0 :(得分:2)

您需要一个单独的套接字。来自ZMQ指南(http://zguide.zeromq.org/page:all#Pros-and-Cons-of-Pub-Sub):

  

杀死反向聊天对于真正的可扩展性至关重要。使用pub-sub,模式可以如何干净地映射到由网络交换机处理的PGM多播协议。换句话说,订阅者根本不连接到发布者,他们连接到交换机上的多播组,发布者向其发送消息。

为了使其正常工作,PUB套接字不会向订阅者发回数据(至少不会以用户可见的方式发送回来。指南中深入讨论了心跳问题:http://zguide.zeromq.org/page:all#The-Asynchronous-Client-Server-Pattern

此外,如果您想跟踪客户端,请查看7 / MDP和18 / MDP协议(http://rfc.zeromq.org/spec:7 - 这也在指南中讨论)。