2016-01-10 23 views
0

我想为几个标记为1 ... n的客户端使用zeromq来从服务器的一个相同套接字中接收包含一个字段作为客户端ID的消息。当标记为1的服务器推送消息时,只有客户端1接收到它。多客户端的zeromq模式从一个服务器推送套接字

一种方法是为客户端生成相同数量的服务器套接字来逐个连接,我认为可能有更好的解决方案。非常感谢。

回答

1

使用“发布/订阅”模式并设置用于过滤消息的套接字选项。

代码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

+0

发布/订阅模式可能会失去不适合这里的消息enter image description here

例子。有没有基于推/拉的任何模式? – ZFY

+0

@ZFY,可以尝试路由器/经销商模式 –

相关问题