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

时间:2019-03-30 20:08:00

标签: 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)
}

1 个答案:

答案 0 :(得分:1)

我认为您应该考虑坚持使用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编码的二进制文件