我最近对 Socket.io
项目很感兴趣,我想知道是否有一种简单的方法可以在不使用其他库的情况下发送图像甚至其他类型的文件。我不是想把文件上传到服务器存储,我只是想把它广播给当时在聊天室里的人。所以代码应该是最少的。但是我真的不擅长编码/解码,所以一些示例代码会很棒。
最佳答案
我改编了Socket.io官方的聊天例子,增加了通过base64编码发送文件/图片甚至视频的功能,你可以看看client.js
中的源码和index.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
}
);
});
这是项目:
关于javascript - 还可以发送图像甚至文件的 Socket.io 聊天应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34850386/