用于多客户端拉取的 zeromq 模式从一台服务器推送套接字接收
zeromq pattern for multi client pull receive from one server pushing socket
我想对标记为 1...n 的多个客户端使用 zeromq,以从服务器中推送包含一个字段作为客户端 ID 的消息的同一个套接字中拉取接收。服务器推送标签为1的消息时,只有客户端1收到。
一种方法是生成相同数量的服务器套接字供客户端一个一个连接,我认为这可能是一个更好的解决方案。非常感谢。
使用 "Publish/Subscribe" 模式并设置用于过滤消息的套接字选项。
SUB 端代码:
context = zmq.Context()
socket = context.socket(zmq.SUB);
socket.connect ("tcp://localhost:%s" % port)
topicfilter = "10001"
socket.setsockopt(zmq.SUBSCRIBE, topicfilter)
string = socket.recv()
PUB 端代码:
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:%s" % port)
topic = 10001
messagedata = random.randrange(1,215) - 80
socket.send("%d %d" % (topic, messagedata))
示例和模式描述 here
更新
您可以使用的另一种模式 Router-Req。
共同点:
pythonhere
的示例
我想对标记为 1...n 的多个客户端使用 zeromq,以从服务器中推送包含一个字段作为客户端 ID 的消息的同一个套接字中拉取接收。服务器推送标签为1的消息时,只有客户端1收到。
一种方法是生成相同数量的服务器套接字供客户端一个一个连接,我认为这可能是一个更好的解决方案。非常感谢。
使用 "Publish/Subscribe" 模式并设置用于过滤消息的套接字选项。
SUB 端代码:
context = zmq.Context()
socket = context.socket(zmq.SUB);
socket.connect ("tcp://localhost:%s" % port)
topicfilter = "10001"
socket.setsockopt(zmq.SUBSCRIBE, topicfilter)
string = socket.recv()
PUB 端代码:
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:%s" % port)
topic = 10001
messagedata = random.randrange(1,215) - 80
socket.send("%d %d" % (topic, messagedata))
示例和模式描述 here
更新
您可以使用的另一种模式 Router-Req。
共同点:
pythonhere
的示例