javascript - 如何编写通过websocket发送的文件?

标签 javascript node.js

我正在制作一个服务器系统,其中服务器通过 websockets 将文件上传到客户端。服务器正在正确发送文件,但我不知道如何在客户端写入它。

我尝试过使用“msg”、“msg.data”和许多其他方式接收文件数据,但它总是生成一个 1kb 的文件。我还尝试在发送和转换回客户端之前将文件转换为 base64(因此消息将是文本而不是二进制文件),但没有成功。

服务器:

var ws = require("nodejs-websocket")
ws.setBinaryFragmentation(99999999999)
var fs   = require('fs'),  
    file = process.argv[2],
    data = fs.readFileSync("./map.zip");

    var server = ws.createServer(function (connection) { 

connection.sendBinary(data)
    }).listen(1000)

客户:

var connection = new WebSocket("ws://localhost:1000")

connection.onmessage=function(msg){
    var fs=require("fs")
    fs.writeFileSync("./test.zip",msg.data)
}

最佳答案

我认为您应该考虑坚持使用 base64 编码方法,因为二进制文件很难调试。

将其作为 base64 发送并从客户端接收

var connection = new WebSocket("ws://localhost:1000")

connection.onmessage=function(msg){
    var fs=require("fs")
    let buffer = new Buffer(msg.data);
    fs.writeFileSync("test.zip", buffer);
}

(这假设 msg.data 是一个 base64 编码的二进制文件)

关于javascript - 如何编写通过websocket发送的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55435273/

相关文章:

javascript - matchTemplate 后的 opencv 黑色图像

javascript - 如何将 github 中已有的扩展包含到我的主 index.html 代码中?

node.js - 在 cli 中运行 gulp 时未找到 Laravel Elixir

node.js - 如何修复 ‘Error: Can' 找不到 Python 可执行文件 "python",您可以设置 PYTHON 环境变量。” ubuntu Node js npm

node.js - 在 node.js 中使用 imagemagick 将 svg 转换为 png

javascript - ElectronJS 和 React DevTools : "Extension server error: Operation failed: http://localhost:3000/has no execution context", 来源:devtools://

javascript简单对象创建测试: opera leaks?

javascript - 防止在弹出窗口外单击时关闭 SweetAlert

javascript - 将空值分配给输入字段

javascript - 访问 Selenium WebDriver 中的 window.external 函数