簡體   English   中英

Socket.io發射事件僅適用於發射器

[英]Socket.io emit event for only emitter

我有與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  
}

如果圖像擴展名不是jpeg ||,則返回false png || jpg,在這種情況下,它會返回false,並且永遠不會加載圖片,因此加載的svg會永遠保留。 因此,如果服務器端驗證失敗,我想向用戶返回其圖像發送失敗的響應。 我怎樣才能做到這一點?

使用控制消息。 添加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
});

另一個可能的解決方案:

  • 只需檢查圖像是否為空。
  • 在客戶端添加超時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM