nodejs socket.on('数据'如何工作?

时间:2017-11-18 10:35:01

标签: json node.js sockets tcp

nodejs socket.on('数据' 如何在数据末尾没有行结束的情况下工作?

我的意思是nodejs如何在没有任何分隔符的情况下分隔每个数据,例如\ n

这个问题是因为我在剧本中发现了一个小错误

错误是:

在非常快速地发送数据时,所有数据都将附加到one和socket.on('数据'只会运行一次

例如

在客户端:

如果同时发送两个或模式数据(在相同的打开连接上),如下所示:

client.write('1');
client.write('2');
服务器上的

socket.on('数据' 将被调用一次,数据将被调用12

如果sendig json数据

,这将会出错

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案

因为在nodejs tcp套接字中,每个块都不包含以前的块 这个技巧将100%发挥作用!

服务器:

socket.on('data', function (data) {

    var newdata = ""+data;
    var newdatachunks = newdata.split("\n");

         for (var i = 0 ; i<(newdatachunks.length-1);i++) {
             console.log("real data is :"+newdatachunks[i]); 
         }

});

客户:

在客户端,每条消息必须以\ n(或您喜欢的任何分隔符)结束

client.write("1\n");
client.write("2\n");
client.write("3\n");
client.write("4\n");

通知:如果你使用json,请不要忘记使用try / catch