Я новичок в node.js, исходя из 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');
}
Когда я пытаюсь отправить какое-то сообщение, оно всегда выводит "Message полученый === [Object] [Object]"
Я попытался заменить JSON.parse на JSON.strngify, но вывод был только некоторым численным, пропозициональным тестом, представленным в ascii.
Как я могу это исправить, так что будет отображать текст я отправить <
'' Полученное сообщение === [Объект] [Объект] "означает, что вы пытаетесь напечатать объекты в виде строк или что вы попытались отправить объект по проводу, не строгая его сначала. Попробуйте просто распечатать объекты сами по себе (не предшествует «Полученное сообщение») и посмотрите, что произойдет. –
Я попробовал это, и вывод все еще [object] [object] – Johnyb
, если ответа не получено до тех пор, пока я не проснусь, я расскажу вам немного о буферах в узле, о том, как они работают и что вызывает проблемы, с которыми вы столкнулись. – GottZ