2013-10-15 27 views
1

嗨,我基本上寫了一個客戶端和服務器使用zmq模塊。我能夠發送一個普通的字符串作爲輸入到服務器使用我的客戶端和數據顯示well.but當我通過它是越來越印刷differently.Below JSON對象是我的客戶端代碼傳遞一個json對象到zmq服務器

客戶機代碼

var zmq = require('zmq'); 
// socket to talk to server 
console.log("Connecting to hello world server..."); 
var requester = zmq.socket('req'); 

var x = 0; 
requester.on("message", function(reply) { 

console.log("Received reply for client from server", ": [", reply.toString(), ']'); 
x += 1; 
if (x === 5) { 
requester.close(); 
process.exit(0); 

} });

requester.connect("tcp://localhost:7000"); 

for (var i = 0; i < 5; i++) { 

console.log("Sending request", i, '...'); 
requester.send({"AdvisorId" : "71864", "Phone": "952-921-4972"}); 
} 

process.on('SIGINT', function() { 
requester.close(); 
}); 

服務器代碼

// Hello World server 
// Binds REP socket to tcp://*:7000 
// Expects "Hello" from client, replies with "world" 

var zmq = require('zmq'); 

// socket to talk to clients 
var responder = zmq.socket('rep'); 

responder.on('message', function(request) { 

console.log("Received request: [", request, "]"); 
console.log(typeof request) 

// do some 'work' 
setTimeout(function() { 

// send reply back to client. 
responder.send("world"); 
}, 1000); 
}); 

responder.bind('tcp://*:7000', function(err) { 
if (err) { 
console.log(err); 
} else { 

console.log("Listening on 7000..."); 
} 
}); 

process.on('SIGINT', function() { 
responder.close(); 
}); 

在服務器請求數據

Received request: [ <SlowBuffer 5b 6f 62 6a 65 63 74 20 4f 62 6a 65 63 74 5d> ] 

而該我發送的數據爲{ 「AdvisorId」:「71864 「,」電話「:」952-921-49 72「}這是一個JSON對象。我堅持這裏任何幫助將是非常有用的。

回答

0

ZeroMq支持字符串和字節[]數據,而不是對象。

試試這個:

requester.send("{AdvisorId" : "71864", "Phone": "952-921-4972}"); 
3
var jsonObject={"AdvisorId" : "71864", "Phone": "952-921-4972"} ; 
var stringObject=JSON.stringify(jsonObject); 
requester.send(stringObject); 

這將工作.. !!

相關問題