2014-02-08 2 views
2

Я написал приложение, которое является узлом (основное приложение) и приложение python (client), с которым я хочу общаться друг с другом, используя zmq Router, шаблон дилера.zeromq ROUTER, формат кодирования сообщения DEALER

проблема в том, что я не мог прочитать сообщения, отправленные с клиентов в приложение nodejs (router). его закодированы некоторые как.

код так прост, как показано ниже:

var responder = zmq.socket('router'); 
responder.on('message', function(request) { 
    console.log(request); 
    // i could not read the messages here.its obfuscated 
}); 

responder.bind('tcp://127.0.0.1:8000', function(err) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log('Listening on 8000...'); 
    } 
}); 

питон:

socket = context.socket(zmq.DEALER) 
     socket.connect("tcp://127.0.0.1:8000") 
     socket.send('blaaaa') 
     print 'message sent!' 

ответ

0

Для вашего приложения, PUSH-PULL представляется более целесообразным:

var zmq = require('zmq'); 

var responder = zmq.socket('pull'); 
responder.on('message', function(request) { 
    console.log(request.toString()); 
    // Use `toString` to convert Buffer to string 
}); 

responder.bind('tcp://127.0.0.1:8000', function(err) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log('Listening on 8000...'); 
    } 
}); 

import zmq 

context = zmq.Context() 
socket = context.socket(zmq.PUSH) 
socket.connect("tcp://127.0.0.1:8000") 
socket.send('blaaaa') 
print 'message sent!' 
2

Если вы хотите использовать разъемы DEALER/ROUTER, тогда сообщение фактически указывается в качестве второго аргумента для функции обратного вызова.

var responder = zmq.socket('router'); 
responder.on('message', function(header, body) { 
    console.log(body.toString('utf8')); 
}); 

сообщение в формате буфера, но вы можете превратить его в строку, используя .ToString (кодирование);

Заголовок содержит идентификатор, это позволяет позже перенаправить ответ/ответ правильному отправителю/реквестеру, который сделал исходный запрос.

Смежные вопросы