0
我想为几个标记为1 ... n的客户端使用zeromq来从服务器的一个相同套接字中接收包含一个字段作为客户端ID的消息。当标记为1的服务器推送消息时,只有客户端1接收到它。多客户端的zeromq模式从一个服务器推送套接字
一种方法是为客户端生成相同数量的服务器套接字来逐个连接,我认为可能有更好的解决方案。非常感谢。
我想为几个标记为1 ... n的客户端使用zeromq来从服务器的一个相同套接字中接收包含一个字段作为客户端ID的消息。当标记为1的服务器推送消息时,只有客户端1接收到它。多客户端的zeromq模式从一个服务器推送套接字
一种方法是为客户端生成相同数量的服务器套接字来逐个连接,我认为可能有更好的解决方案。非常感谢。
使用“发布/订阅”模式并设置用于过滤消息的套接字选项。
代码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
更新
,您可以使用另一种模式路由器 - 需求。 共同的想法: 为蟒蛇here
发布/订阅模式可能会失去不适合这里的消息
例子。有没有基于推/拉的任何模式? – ZFY
@ZFY,可以尝试路由器/经销商模式 –