我有一个node.js(tcp)服务器,即
net.createServer
我有一个node.js客户端。我用方法
创建了一个module.exportthis.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。 我的意思是,如果在服务器中我记录服务器正在接收的内容,我看,有时只有一条“消息”,有时两三条“消息”合并。
它能是什么?
对不起我的词典...
答案 0 :(得分:1)
假设您发送的消息数与您在另一端接收/期望的消息数相匹配,那么我认为您所描述的内容基本上就是TCP的工作方式。
TCP是一个流,因此您不能/不应该对“消息边界”做出任何假设。您可以一次接收一个字节或10千字节,它只取决于网络堆栈和其他一些因素,因此您应该准备好处理任何数量的数据(例如创建协议,可能使用分隔符,整理个别“消息”)。