我正在使用node.js示例。我在我的ubuntu 12.10机器上安装了openpgm和zeromq 3.2。下面的代码:zeromq epgm pub/sub不工作
var zmq = require('zmq')
, port = 'epgm://eth0;239.192.1.1:5555';
var socket = zmq.socket('pub');
socket.identity = 'publisher' + process.pid;
var stocks = ['AAPL', 'GOOG', 'YHOO', 'MSFT', 'INTC'];
socket.bind(port, function(err) {
if (err) throw err;
console.log('bound!');
setInterval(function() {
var symbol = stocks[Math.floor(Math.random()*stocks.length)]
, value = Math.random()*1000;
console.log(socket.identity + ': sent ' + symbol + ' ' + value);
socket.send(symbol + ' ' + value);
}, 1000);
});
和其他应用程式:
变种ZMQ =要求( 'ZMQ'),端口= 'epgm:// eth0的; 239.192.1.1:5555';
变种插座= zmq.socket( '子');
socket.identity = '订户' + process.pid;
socket.connect(port);
socket.subscribe( 'AAPL'); socket.subscribe( '歌');
console.log('connected!'); ('message',function(data){ console.log(socket.identity +':received data'+ data.toString());});
我不知道如果我使用了正确的组播地址。我已经在同一台机器上同时在网络中的另一台机器上尝试了这些应用程序。我很确定我没有想过那部分,但我似乎无法在任何地方找到任何好的解释。但我希望这个工作在同一台机器上。有任何想法吗?
PS:忘了解释到底发生了什么:基本上按计划只是推动所有的消息没有任何错误,而拉程序启动,但没有收到任何消息。
所以基本上,OSX机器阻止广播。我甚至没有在虚拟机上运行ubuntu。这是一个基本的操作系统,我仍然看不到我自己的更新。但我会尝试你的代码(特别是你选择的广播地址),并给它一个镜头 – Munim
其实在进一步调查...... OS X工作正常......它使用比Ubuntu的更新版本的libzmq,并且他们阻止了环回多播,因为它有问题。所以OS X机器正在获得其他人的广播,但它自己的。它播放得很好。似乎有问题的那个是12.10。考虑到他们使用zmq的v2而不是v3,12.04机器也正常工作。 – Cyclone