首页 > 解决方案 > Socket.io:相同的图像不连续发送两次

问题描述

我有聊天应用程序,它具有可以发送图像的功能,但我现在发现它不能连续两次发送两个图像,但你可以像这样发送两次相同的图像

- 发送图像 1

- 发送图像 2

- 发送图像 1

我还具有可以粘贴图像并使用(剪贴板)发送的功能,它可以连续发送图像,所以我很困惑是什么原因造成的?这是我的代码:

客户端:

document.getElementById('fileselect').addEventListener('change', function () {
   if (this.files.length != 0) {
      var file = this.files[0],
          reader = new FileReader();

    reader.onload = function (e) {

       this.value = '';
       socket.emit('img', {
            image: e.target.result

       })
    };
       reader.readAsDataURL(file);
  };
}, false);

和服务器端

socket.on('img', function(data) {
io.in(socket.current_room).emit('img', {image: data.image, id: socket.id});

怎么了?我该如何解决

标签: javascriptnode.jsfilesocket.io

解决方案


这是因为fileselect如果您两次选择同一个文件,元素不会被刷新,因此不会触发“更改”事件。此处的解决方案:如何检测同一文件的输入类型=文件“更改”?


推荐阅读