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权力 !