nodejs使用socket.io传输大文件,一上传,就重连......

采用分片上传
服务端:
io.on('connection', (socket) => {

console.log('socket===>>>', socket.id);
socket.on('upload', (msg) => {
  console.log('upload===>>>', msg);
  uploadio(msg, socket);
});
socket.on('merge', (msg) => {
  console.log('merge===>>>', msg);
  merge(msg, socket);
});

});

客户端:

  const that = this;
  this.socket = io('', {
    query: { room: 'upload', userId: `client_${Math.random()}` }
  });
  this.socket.on('connect', function() {
    console.log('连接成功');
  });
  // socket.on("event", function (data) {});
  this.socket.on('disconnect', function(err) {
    console.log(`断开连接${err}`);
  });
  this.socket.on('reconnect', function(data) {
    console.log(`重新连接${data}`);
  });
  this.socket.on('uploaded', () => {
    that.chunkDoneTotal += 1;
    if (that.chunkTotal === that.chunkDoneTotal) {
      that.socket.emit('merge', {
        chunkSize: that.chunkSize,
        name: that.fileName,
        total: that.chunkTotal,
        hash: that.fileHash,
      });
    }
  });
  this.socket.on('done', () => {
    showTips('success', '文件分片上传完结并合并成功');
  });

image.png

发现上传小文件是可以的,只要一分片就必重连接
image.png
image.png

重连后,服务端,无法监听到upload事件,开始以为是缓冲区问题,设置了缓冲区大小还是不行

const io = require('socket.io')(server, { maxhttpbuffersize: 1024 1024 100 });

求问,是啥原因呢?

阅读 2.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题