Socket.io聊天应用程序,也可以发送图像,甚至文件

我最近对Socket.io项目感兴趣,不知道是否有简单的方式发送图像,甚至其他types的文件,而无需使用其他库。 我并不是试图将file upload到服务器来存储,我只是想把它传播给当时在聊天室里的那些人。 所以代码应该是最小的。 然而,我在编码/解码的东西真的很糟糕,所以一些示例代码会很好。

我已经适应了Socket.io的官方聊天示例,并添加了通过base64编码发送文件/图像甚至video的function,您可以查看client.jsindex.js中的源代码,下面是最相关的部分,希望对你有所帮助。

在客户端:

 $('#uploadfile').bind('change', function(e){ var data = e.originalEvent.target.files[0]; readThenSendFile(data); }); function readThenSendFile(data){ var reader = new FileReader(); reader.onload = function(evt){ var msg ={}; msg.username = username; msg.file = evt.target.result; msg.fileName = data.name; socket.emit('base64 file', msg); }; reader.readAsDataURL(data); } 

在服务器端:

 socket.on('base64 file', function (msg) { console.log('received base64 file from' + msg.username); socket.username = msg.username; // socket.broadcast.emit('base64 image', //exclude sender io.sockets.emit('base64 file', //include sender { username: socket.username, file: msg.file, fileName: msg.fileName } ); }); 

这是该项目:

https://github.com/Arch1tect/Chatbox