为什么我使用emit发送的节点数据包到达部分?

时间:2017-11-25 12:31:48

标签: node.js sockets

我目前正在尝试使用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个字节,据我所知,这个限制

0 个答案:

没有答案