Javascript 通过socket.io在WebSocket上传输图像时负载过重

Javascript 通过socket.io在WebSocket上传输图像时负载过重,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我想通过基于NodeJS的后端将图像从一个客户端流到另一个客户端。我每40毫秒向后端发送一个映像,作为回报,后端会将映像发送到另一个客户端。我的问题是,每个客户端对都会使后端的负载增加5%。每个图像大约20KB 我的前端代码如下所示: const socket = require('socket.io-client')('http://localhost:3000'); const fs = require('fs'); socket.on('connect', function () {

我想通过基于NodeJS的后端将图像从一个客户端流到另一个客户端。我每40毫秒向后端发送一个映像,作为回报,后端会将映像发送到另一个客户端。我的问题是,每个客户端对都会使后端的负载增加5%。每个图像大约20KB

我的前端代码如下所示:

const socket = require('socket.io-client')('http://localhost:3000');
const fs = require('fs');

socket.on('connect', function () {
    console.log('connected');
    socket.emit('room', '123456');
});

socket.on('joined', () => {
    console.log('joined the room');
    const file = fs.readFileSync('./1902865_597805016961665_1536612023_n.jpg');

    setInterval(() => {
        socket.emit('frame', file);
    }, 40);
});
const app = require('express')();
const http = require('http').Server(app);
const io = require('socket.io')(http);

http.listen(3000, function () {
    console.log('listening on *:3000');
});

io.on('connection', socket => {
    socket.on('room', function (room) {
        console.log(`got join request for ${room}`);
        socket.join(room);
        socket.myroom = room;
        socket.emit('joined');
    });

    socket.on('disconnect', function () {
        socket.to(socket.myroom).emit('disconnected');
        socket.disconnect();
    });

    socket.frameCounter = 0;
    socket.on('frame', frame => {
        console.dir(`frameCounter ${socket.frameCounter}`);
        socket.frameCounter += 1;
        socket.to(socket.myroom).emit('frame', frame);
    });
});
后端如下所示:

const socket = require('socket.io-client')('http://localhost:3000');
const fs = require('fs');

socket.on('connect', function () {
    console.log('connected');
    socket.emit('room', '123456');
});

socket.on('joined', () => {
    console.log('joined the room');
    const file = fs.readFileSync('./1902865_597805016961665_1536612023_n.jpg');

    setInterval(() => {
        socket.emit('frame', file);
    }, 40);
});
const app = require('express')();
const http = require('http').Server(app);
const io = require('socket.io')(http);

http.listen(3000, function () {
    console.log('listening on *:3000');
});

io.on('connection', socket => {
    socket.on('room', function (room) {
        console.log(`got join request for ${room}`);
        socket.join(room);
        socket.myroom = room;
        socket.emit('joined');
    });

    socket.on('disconnect', function () {
        socket.to(socket.myroom).emit('disconnected');
        socket.disconnect();
    });

    socket.frameCounter = 0;
    socket.on('frame', frame => {
        console.dir(`frameCounter ${socket.frameCounter}`);
        socket.frameCounter += 1;
        socket.to(socket.myroom).emit('frame', frame);
    });
});
可在此处找到一个工作示例:

这是预期的行为吗?还是我做错了什么