Node.js tcpsocket on('data') 事件



我有一个关于node.js tcp套接字和('data')事件的问题。

例如,我的客户将数据发送到套接字,并使用非常长的消息socket.write('<VERY LONG MESSAGE>');

发送数据

服务器正在侦听端口并接收该数据。

可以使用服务器data事件从其开始字节开始接收<VERY LONG MESSAGE>吗?(例如,要由3个或更多零件块)。

我知道汇总消息,但是块呢?

我是否应该实现收到的数据尺寸验证和COC_4 data CC_4结果的结果,或者socket.write通常会发送消息而不分解?

是的

插座由操作系统内核管理。由于网络I/O可以花时间,因此通常使用两个队列缓冲区作为插座;一个用于发送,一个用于接收数据。由于这些分数的消息大小可能会随着不同的平台而变化。

为自己测试:

const net = require("net");
var server = net.createServer({
    allowHalfOpen: false,
    pauseOnConnect: false
}, function(serversideSocket) {
    console.log("socket connected");
    serversideSocket.on("data", function(data) {
        console.log(`got data of size ${data.length}`);
    });
    serversideSocket.on("end", function() {
        console.log("client disconnected, closing");
        server.close();
    });
}).listen(1337, "127.0.0.1", function() {
    console.log("server listening");
    var clientsideSocket = net.createConnection({
        port: 1337,
        host: "127.0.0.1",
        allowHalfOpen: false
    });
    var sendBuffer = Buffer.allocUnsafe(1048576);
    clientsideSocket.write(sendBuffer);
    clientsideSocket.end();
});

这是我的输出:

server listening
socket connected
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
got data of size 65536
client disconnected, closing

最新更新