nodejs中websocket传输大量数据

用nodejs当websocket server时,当客户端传输的数据量比较大时,数据会分片到达服务器,这时socket的data处理函数接收到的只是整个数据中的一部分,因此我们要将分片的数据拼合起来再做处理。当最后的数据到达时,数据的末尾是\ufffd,所以可以靠判断数据中是否包含\ufffd来指示整个数据是否已经全部接收。

var message = '';

socket.on('data', function(chunk) {
    message += chunk;
    var index = message.indexOf('\ufffd');
    if(index !== -1) {
        console.log(message.slice(0, index));
        // console.log(message.slice(1, index));
        // Do your logic here
        message = message.slice(index + 1);
    }
});
Leave a comment

2 Comments.

  1. 去监听\ufffd是不是多此一举?记得不错的话,应该会有end事件的。
    socket.on(‘end’,function(){
    //data are all received
    })

  2. socket的end是断开连接时触发的

Leave a Reply


[ Ctrl + Enter ]