我剛剛接觸j.js背景的node.js,我很難理解背後的東西背後的概念,目前我正在嘗試創建簡單的控制檯聊天。代碼服務器:簡單的TCP聊天node.js
var net=require("net");
var sockets=[];
net.createServer(function(socket){
sockets.push(socket);
socket.on("data",function(data){
posliSpravu(socket,JSON.parse(data));
});
socket.on("close",function(){
console.log(socket + " has disconnected");
sockets.splice(sockets.indexOf(socket),1);
})
}).listen(8888);
function posliSpravu(from,message){
var msg=JSON.stringify("Niekto povedal : " + message)+'\n';
sockets.forEach(function(incoming_socket){
if(incoming_socket!=from){
incoming_socket.write(msg);
}
})
}
客戶端代碼
var net=require("net");
var client=new net.Socket();
client.connect(8888,function(){
console.log("Connected");
});
process.stdin.resume();
process.stdin.on("data",function(data){
posli(data);
})
client.on("data",function(data){
console.log("Recieved data === " + JSON.parse(data));
})
function posli(msg){
client.write(JSON.stringify(msg)+'\n');
}
當我試圖發送一些信息,它總是輸出 「消息收到=== [對象] [對象]」
我試圖用JSON.strngify替換JSON.parse,但輸出只是一些數字,可以用ascii表示。
如何解決它,所以它會顯示文字我送<
'「Message received === [Object] [Object]」'表示您試圖將對象打印爲字符串,或者您試圖通過電線發送對象而不先將其串化。嘗試只是自己打印對象(不要在「收到消息」之前),看看會發生什麼。 –
我試了一下,輸出仍然是[對象] [對象] – Johnyb
如果沒有答案,直到我醒來,我會告訴你一些關於緩衝區的節點,它們是如何工作的,以及導致你遇到麻煩的原因。 – GottZ