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

sol*_*way 9 javascript encoding websocket node.js socket.io

我最近对这个Socket.io项目感兴趣,我想知道是否有简单的方法来发送图像甚至其他类型的文件而不必使用其他库.我不是试图将文件上传到服务器进行存储,我只是想将它广播给当时在聊天室的人.所以代码应该是最小的.但是我在编码/解码内容时非常糟糕,所以一些示例代码会很棒.

Arc*_*ect 9

我已经适应Socket.io的官方聊天例子,通过添加base64编码发送文件/图片甚至视频的功能,你可以看看源代码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);
}
Run Code Online (Sandbox Code Playgroud)

在服务器端:

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
        }

    );
});
Run Code Online (Sandbox Code Playgroud)

这是项目:

https://github.com/Arch1tect/Chatbox

  • @Faizan我是使用库完成的。var formidable = require('formidable'); //文件上传模块 (2认同)