发送文件时会阻止聊天消息,然后因心跳

时间:2016-01-12 03:09:25

标签: node.js sockets websocket socket.io

我最近添加了功能,所以基于socket.io的聊天室现在可以播放文件了。以下是我的表现:

  var data = e.originalEvent.target.files[0];
  var reader = new FileReader();
  reader.onload = function(evt){

    var file = evt.target.result;
    socket.emit('base64 file', file);

  };
  reader.readAsDataURL(data);

但我注意到,当用户发送文件时,他/她不能再发送任何聊天消息,他发送的聊天消息会排队,并在文件完成发送后发出。有没有办法绕过这种行为?

此外,当用户发送一个超过60秒的较大文件时,他会断开连接。我认为这是由于Socket.io的默认超时设置。我猜因为用户在发送文件时无法发送消息,所以他也不能将他的心跳发送到服务器,因此服务器认为他已经超时了。这对我来说似乎是个错误。

如何避免超时问题并允许用户在发送文件时进行聊天? THX!

更新: 新的Socket.io支持使用buffer发送二进制数据,所以我也测试了它。但是,仍然存在同样的问题。

0 个答案:

没有答案