Node.JS和Java PUB / SUB

我试图build立一个应用程序,通信将由一个node.js服务器完成。 该节点服务器将接收来自其他对等方的消息。

我的node.js代码是:

 var zmq = require('zmq'), socket = zmq.socket('sub'); socket.bind('tcp://127.0.0.1:5556', function (err) { if (err) { console.log('Error: ', err); throw err; } socket.on('message', function (envelope, blank, data) { console.log(arguments); }); socket.on('error', function (err) { console.log(arguments); }); }); 

在系统的其他部分,有一个java服务器应该为这个服务器发送消息。 这是我的java代码:

 Context context = ZMQ.context(1); Socket publisher = context.socket(ZMQ.PUB); publisher.connect("tcp://127.0.0.1:5556"); for (int request_nbr = 0; request_nbr < 10; request_nbr++) { publisher.send("Hello"); } 

现在,我的java服务器正在本地运行,并且我的node.js在端口5556暴露的node.js中运行。
我有成功发送来自java服务器的消息。 但是我的node.js服务器没有收到消息。

我的ZeroMQ初始化有任何问题吗?

是的,有一个问题:

按照ZeroMQ协议规范中的定义, SUB -Formal Scalable Communication Pattern原型在实例化时具有空的预订列表。

空的子端订阅是原因:

你的SUB端确实需要订阅其他任何东西(至less是一个"" – 是的 – 一个空string就足够了,可以开始接收任何和所有的消息,或者可以设置一些问题/上下文特定的string,作为TOPICfilter,其中每个消息将开始得到至less一个这样的TOPIC-s的存在的testing,并丢弃(不是.recv()或不被提升到.on( 'message', ... )处理程序)。

无论如何, 享受分布式计算的ZeroMQ权力