node.js 예제로 작업하고 있습니다. 내 우분투 12.10 컴퓨터에 openpgm 및 zeromq 3.2를 설치했습니다.zeromq epgm pub/sub not working
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);
});
및 다른 응용 프로그램 :
var에 zmq = 필요 ('zmq'), 포트 = '; epgm 239.192.1.1 // eth0를 : 5555'여기 코드는;
var 소켓 = zmq.socket ('sub');
socket.identity = 'subscriber'+ process.pid;
socket.connect (port);
socket.subscribe ('AAPL'); socket.subscribe ('GOOG');
console.log ('connected!');
socket.on ('message', function (data) { console.log (socket.identity + ':받은 데이터'+ data.toString());});
올바른 멀티 캐스트 주소를 사용하고 있는지 확실하지 않습니다. 나는이 기기들을 같은 기계에서 함께 시험해 보았고, 또한 네트워크의 다른 기계에서도 시험해 보았다. 나는 그 부분을 통해 생각하지 못했지만, 어디서나 좋은 설명을 찾을 수는 없다고 확신합니다. 그러나 나는 이것이 어쨌든 동일한 기계에서 작동 할 것으로 예상했다. 어떤 아이디어?
추신 : 정확히 무슨 일이 일어 났는지 설명하는 것을 잊어 버렸습니다. 기본적으로 푸시 프로그램은 오류없이 모든 메시지를 푸시하고 끌어 오기 프로그램을 시작하지만 메시지를받지 않습니다.
기본적으로 OSX 머신이 브로드 캐스트를 차단하고 있습니다. 나는 가상 머신에서 우분투를 실행하지도 않는다. 그것은 기본 운영 체제이며 여전히 내 자신의 업데이트를 볼 수 없습니다. 그러나 나는 당신의 코드 (특히 당신이 선택한 브로드 캐스트 주소)를 시도해보고 그것에 대해 총을 줄 것이다 – Munim
사실 추가 조사에 ... OS X은 올바르게 작동하고있다 ... 우분투보다 더 새로운 버전의 libzmq를 사용하고 있으며 루프백을 막았다. 문제가 있었기 때문에 멀티 캐스트에서. 그래서 OS X 머신은 다른 모든 사람들의 방송을 얻고 있습니다. 방송 잘하고있어. 문제가있는 것 같습니다 12.10입니다. 12.04 머신은 v3 대신 v2의 zmq를 사용하고 있기 때문에 제대로 작동합니다. – Cyclone