我有使用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会永远保留。因此,如果服务器端验证失败,我想向用户返回其图像发送失败的响应。我该怎么办?
答案 0 :(得分:1)
使用控制消息。添加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
});
另一种可能的解决方案: