Node.js 聊天信息在发送文件时被阻止,然后由于心跳超时

Node.js 聊天信息在发送文件时被阻止,然后由于心跳超时,node.js,sockets,websocket,socket.io,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); }; re

我最近添加了一些功能,这样我基于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超时设置造成的。我猜由于用户在发送文件时不能发送消息,所以他也不能将心跳信号发送到服务器,所以服务器认为他超时了。这对我来说似乎是个错误

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

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

socket.io 1.3.7是我正在使用的。您可以使用AJAX将文件上载到服务器,仅在上载时使用websocket发出事件finish@trquoccuong那是个好主意