javascript - 还可以发送图像甚至文件的 Socket.io 聊天应用程序

标签 javascript node.js encoding websocket socket.io

我最近对 ​​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
        }

    );
});

这是项目:

https://github.com/Arch1tect/Chatbox

关于javascript - 还可以发送图像甚至文件的 Socket.io 聊天应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34850386/

相关文章:

javascript - 使用浏览器控制台选择网页表格中的下拉框

javascript - 如何在 cookie-session 1.0.2 中传递 cookie 选项

ios - 将数组编码为 json 时出现按键顺序问题

javascript - AngularJs-$Injector 一个对象?

javascript - Moment.js 从 MySQL 日期时间返回错误值

php - 使用 AJAX 时访问 requestParameters - Symfony

node.js - baseurl64 缓冲区解码

javascript - 将 CSS/IMG/JS 与 NodeJS 结合使用

xml - Coldfusion XMLFormat() 不转换所有字符

c - 输出utf-8到控制台