我目前正在尝试使用node.js服务器构建音频流系统,出于我的目的,我希望能够监控客户端收到的每个数据包的某些信息。为了达到这个目的,我将一个WAV文件分割成标题和一个段流,这些段通过socket.io发送,然后由客户端使用js io' s。
接收。问题是客户端收到的数据包比我发送的数据包多,查看数据包中的一些数据包是在几个数据包之间分割的单个数据包。例如,其中一个文件被分成642个块,每个块都与它自己的发送一起发送,然后客户端在.on上接收842个数据包。
服务器端:
for (var i = 44; i < fileSizeInBytes; i += inc) {
var finalByte = i;
finalByte += inc;
var audio_stream = fs.createReadStream( track_location , { start: i, end: i + inc } );
audio_stream.on( 'data', function(data){
socket.emit('stream_audio', data);
});
};
客户方:
socket.on( 'stream_audio' , function( data ){ // on chunk recieved
var segment = wavify(toArrayBuffer(data.data), numberOfChannels, sampleRate);
context.decodeAudioData(segment, function(buf) {
audioStack.push(buf);
});
console.log('Chunk read');
console.log(data);
});
有没有办法阻止大块被分开?或者有没有办法在客户端重新加入它们?
我知道一次可以发送多少数据是有限制的,我一次发送20480个字节,据我所知,这个限制