我最近添加了功能,所以基于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
发送二进制数据,所以我也测试了它。但是,仍然存在同样的问题。