Node.js Socket.io为什么非常慢?

Node.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

我正试图从文件中读取数据,如下所示,并将数据发送到客户端

我可以在30秒内发送一个20MB的文件。但我必须每秒发送20MB

我做错什么了吗

Server.js

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
)读取。对于您的主要问题,您似乎读取了整个文件,然后按原样发送给客户端。这不是一个好主意。考虑使用“流”机制。例如,请参见以下答案: