Сообщение чата блокируется при отправке файла, затем тайм-аут из-за пульса
Я недавно добавил функциональность, чтобы мой чат на базе 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 для отправки двоичных данных с использованием buffer
Я тоже это проверил. Тем не менее, есть та же проблема.