Javascript 通过socket.io在WebSocket上传输图像时负载过重
我想通过基于NodeJS的后端将图像从一个客户端流到另一个客户端。我每40毫秒向后端发送一个映像,作为回报,后端会将映像发送到另一个客户端。我的问题是,每个客户端对都会使后端的负载增加5%。每个图像大约20KB 我的前端代码如下所示: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 () {
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);
});
});
可在此处找到一个工作示例:
这是预期的行为吗?还是我做错了什么