оригинальный вопрос здесь: https://github.com/JustinTulloss/zeromq.node/issues/444Подписаться не работает при публикации из Python
Привет,
Если я подписываюсь с Node.js издателю в Python, абонент не может получать сообщения. С другой стороны, издатель Node может отправлять как подписчиков python, так и подписчиков узлов, издатель python может отправлять подписчика python.
Узел подписчик:
// Generated by LiveScript 1.4.0
(function(){
var zmq, sock;
zmq = require('zmq');
sock = zmq.socket('sub');
sock.connect('tcp://127.0.0.1:3000');
sock.subscribe('');
console.log('Subscriber connected to port 3000');
sock.on('message', function(message){
return console.log('Received a message related to: ', 'containing message: ', message.toString());
});
}).call(this);
Node издатель:
// Generated by LiveScript 1.4.0
(function(){
var zmq, sock;
zmq = require('zmq');
sock = zmq.socket('pub');
sock.bindSync('tcp://127.0.0.1:3000');
console.log('Publisher bound to port 3000');
setInterval(function(){
console.log('Sending a multipart message envelope');
return sock.send('TestMessage(node)!');
}, 1500);
}).call(this);
Python издатель
import zmq
import time
context = zmq.Context()
publisher = context.socket(zmq.PUB)
publisher.bind("tcp://127.0.0.1:3000")
while True:
time.sleep(1)
publisher.send("TestMessage")
print "Sent"
Python подписчик:
import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.setsockopt(zmq.SUBSCRIBE, "")
socket.connect("tcp://127.0.0.1:3000")
while True:
string = socket.recv()
print string
Нет, это не работает, либо ... – ceremcem
держись! Этот код не работает на моем ноутбуке, но работает на RaspberryPi! Позвольте мне отлаживать далее ... – ceremcem
Это была проблема версии libzmq. Но была ошибка с кодом, который вы упомянули, и теперь он исправлен. Спасибо. – ceremcem