node.js tcp服务器,客户端和已发送的消息,如merged

时间:2014-09-30 15:55:42

标签: node.js

我有一个node.js(tcp)服务器,即

net.createServer

我有一个node.js客户端。我用方法

创建了一个module.export
this.connect = function() {

var client = new net.Socket();

client.setTimeout(5000);

client.connect(settings.collectorport, settings.collectorhost, function() {

    console.log('connected');

});
....

另一种方法,如

this.write = function(data, client) {
    client.write(some-string);
}

从另一个node.js文件中,我从循环内部调用这样的方法,如:

while (something) {
    agent.write(data,client);
}

有时候服务器会收到或者客户端发送两个“some-string”all.gheter。 我的意思是,如果在服务器中我记录服务器正在接收的内容,我看,有时只有一条“消息”,有时两三条“消息”合并。

它能是什么?
对不起我的词典...

1 个答案:

答案 0 :(得分:1)

假设您发送的消息数与您在另一端接收/期望的消息数相匹配,那么我认为您所描述的内容基本上就是TCP的工作方式。

TCP是一个流,因此您不能/不应该对“消息边界”做出任何假设。您可以一次接收一个字节或10千字节,它只取决于网络堆栈和其他一些因素,因此您应该准备好处理任何数量的数据(例如创建协议,可能使用分隔符,整理个别“消息”)。