Node.js Socket.io为什么非常慢?
我正试图从文件中读取数据,如下所示,并将数据发送到客户端 我可以在30秒内发送一个20MB的文件。但我必须每秒发送20MB 我做错什么了吗 Server.jsNode.js Socket.io为什么非常慢?,node.js,websocket,socket.io,filereader,Node.js,Websocket,Socket.io,Filereader,我正试图从文件中读取数据,如下所示,并将数据发送到客户端 我可以在30秒内发送一个20MB的文件。但我必须每秒发送20MB 我做错什么了吗 Server.js var File = require('File') var FileReader = require('filereader'), fileReader = new FileReader(); fileReader.setNodeChunkedEncoding(true || false); fileReader.readAsArray
var File = require('File')
var FileReader = require('filereader'), fileReader = new FileReader();
fileReader.setNodeChunkedEncoding(true || false);
fileReader.readAsArrayBuffer(new File('../Test.txt'));
fileReader.addEventListener('load', function (ev) {
JsonData = JSON.stringify(new Int16Array(ev.target.result));
});
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
console.log('a user connected');
console.log("DateTime : " + getDateTime());
socket.on("update", function(data){
console.log("DateTime : " + getDateTime());
socket.send(JsonData);
});
socket.send(JsonData);
socket.on('message', function(msg){
console.log('message: ' + msg);
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
http.listen(9099, function(){
console.log('listening on *:9099');
});
Client.js
var socket = io("http://localhost:9099");
socket.on('message', function(message) {
var JsonData = JSON.parse(message);
socket.emit("update", { data:"getData"});
});
Socket.io版本:2.2.0
Filereader版本:0.10.3
NodeJS版本:10.16.3由于
文件
的不兼容依赖关系,您的代码引发错误。为什么不使用内置的fs
模块,而不是那些非常旧的包(上次更新是在5年前!)?我将该文件读为arraybuffer。fileReader.readAsArrayBuffer()据我所知,fs中没有这样的方法。fs
默认情况下以相同的方式(buffer
)读取。对于您的主要问题,您似乎读取了整个文件,然后按原样发送给客户端。这不是一个好主意。考虑使用“流”机制。例如,请参见此答案:由于文件
的不兼容依赖关系,您的代码会抛出一个错误。为什么不使用内置的fs
模块,而不是那些非常旧的包(上次更新是在5年前!)?我将该文件读为arraybuffer。fileReader.readAsArrayBuffer()据我所知,fs中没有这样的方法。fs
默认情况下以相同的方式(buffer
)读取。对于您的主要问题,您似乎读取了整个文件,然后按原样发送给客户端。这不是一个好主意。考虑使用“流”机制。例如,请参见以下答案: