Событие выброса Socket.io только для эмитента - PullRequest
0 голосов
/ 05 июня 2019

У меня есть алгоритм отправки изображения с socket.io, и я решил добавить сообщение «загрузка», пока изображение не будет загружено.

  $("#output").append(
        `<div id="loading-placeholder" style="opacity: 0"><div id="loading">${loadingSvg}</div></div>`
      );

и этот div удаляется при загрузке изображения

, но проблема в том, что у меня есть проверка изображения на стороне сервера

var ext = image.substring("data:image/".length, image.indexOf(";base64"));
console.log('extension ' + ext)
if(ext === 'jpeg' || ext === 'png' || ext === 'jpg'){
  chnm.in(socket.current_room).emit('img', {image: data.image, id: socket.id});
}
else{
  return false  
}

и он возвращает false, если изображениерасширение не в формате JPEG ||png ||JPG, и в этом случае он возвращает false и изображение никогда не загружается, так что загрузка SVG остается навсегда.поэтому, если проверка на стороне сервера не удалась, я хочу вернуть ответ пользователю, который не смог отправить его изображение.как я могу это сделать?

1 Ответ

1 голос
/ 05 июня 2019

Использование контрольного сообщения.Добавьте is_loaded свойство.

chnm.in(socket.current_room).emit('img', {
  image: data.image,
  id: socket.id,
  is_loaded: true
});

В случае ошибки:

chnm.in(socket.current_room).emit('img', {
  image: null,
  id: null,
  is_loaded: false
});

Другие возможные решения:

  • Просто проверьте изображение на ноль.
  • Добавить тайм-аут на стороне клиента.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...