【发布时间】:2013-04-28 16:56:02
【问题描述】:
有一个服务器,它收集一些数据,然后将其发送给客户端。我需要确保客户端获得了服务器发送的数据。我认为这里的 PUB/SUB 模式是最好的选择,但我不明白如何检查客户端是否获取数据?我听说过一些可靠的 PUB/SUB,但没有真正的例子。
有什么想法、建议、例子和帮助吗?
简单的发布者:
import zmq
context = zmq.Context()
server_socket = context.socket(zmq.PUB)
server_socket.bind('tcp://*:5559')
while True:
server_socket.send('message')
简单订阅者:
import zmq
context = zmq.Context()
client_socket = context.socket(zmq.SUB)
client_socket.setsockopt(zmq.SUBSCRIBE, '')
client_socket.connect('tcp://localhost:5559')
while True:
print client_socket.recv()
在此示例中,我需要确保订阅者收到“消息”。
【问题讨论】:
-
我可能会在这里显示我对网络的无知,但 TCP 本质上不是一个可靠的通信协议,订阅者不会收到消息的唯一方法是如果他们没有连接?
-
这是真的,但我需要检查是否有东西崩溃了,在这种情况下我需要重新发送消息。 F.e.客户端崩溃 20 秒,但服务器仍在发送消息,当客户端唤醒时,会丢失一堆消息。
-
你能不能只打开第二个端口并听它确认?
标签: python zeromq publish-subscribe pyzmq