用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);
}
});

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