简单的TCP聊天节点.js
simple TCP chat node.js
我是node的新手.js,来自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表示测试。
我该如何修复它,以便它显示我发送的文本<</p>
socket.setEncoding('utf8');
,process.stdin.setEncoding('utf8');
是你的朋友。 您只需要在等待数据的行之前添加一次,一切都应该像您最初考虑的那样工作。
您正在字符串上调用JSON.stringify
。请确保使用有效的对象。通过网络发送实际的JSON也更好:
//server
var msg=JSON.stringify({ name: 'Niekto povedal', content: message });
// client
var message = JSON.parse(data);
console.log("Recieved data from :" + message.name);
console.log("Recieved data === " + JSON.stringify(message.content));
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 节点.js将变量显示为 HTML
- 如何解决'窗口未定义'终端上的节点JS出错
- S3文件上传文件对象使用节点js
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 嵌套的promise节点js
- 使用节点JS发送电子邮件
- 节点JS重定向循环
- 起始节点.js用于并行的线程池
- 获取图像节点js的主色
- 调整节点js中的图像大小
- 节点JS express和控制台输出到命令行与浏览器
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- 如何访问日期并将其插入数据库?节点.JS&MongoDB
- 节点.js快速删除 req.body 不起作用
- 节点.js中的嵌套异步操作
- 如何在核心php应用程序中使用节点js json Web令牌库
- 使用节点js的Bootstrap和Jquery
- 节点.js加密输入/输出类型
- 节点.js在不可能的地方打印“未定义”