javascript - 如何编写通过 websocket 发送的文件?
问题描述
我正在制作一个服务器系统,其中服务器通过 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 编码的二进制文件)
推荐阅读
- c++ - 使 shared_ptr 失去内存所有权
- r - R、Json、Rest API
- mysql - Jmeter中的连接异常
- travis-ci - Travis 手动确认下一阶段
- ios - 在应用内的 ios 中手动检查并下载最新版本
- java - 使用带有 java 8 流的自定义收集器时获取 ClassCastException
- php - 带有 ESP32、+ PHP + MySQL 的“未定义索引”
- php - php sha1的asp.net等价物
- javascript - 如何使 jQuery 智能感知在 VisualStudio Code for js 文件中工作
- security - HSM设备如何存储和保护私钥?