Сообщение чата блокируется при отправке файла, затем тайм-аут из-за пульса

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

0 ответов

Другие вопросы по тегам