javascript - 如何设置最大值。socket io 的客户端?
问题描述
我的服务器只有两个允许连接的客户端。如何在socket.io的两个客户端上设置客户端的最大值?这就是我的 server.js 的样子:
var path = require('path');
var express = require('express'),
app = express(),
http = require('http'),
socketIo = require('socket.io');
var server = http.createServer(app);
var io = socketIo.listen(server);
server.listen(9000);
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname + 'index.html'));
});
app.use(express.static(__dirname + '/'));
io.on('connection', function (socket) {
socket.on('data', function (data) {
socket.broadcast.emit('data', data)
});
socket.on('disconnect', function () {
console.log("disconnect")
});
});
解决方案
这是未经测试的,但您应该能够检查连接中的用户数量并在连接/断开连接时更改它。
这是一个例子:
const connectedUsers = 0;
const maxUsers = 2;
io.on('connection', function (socket) {
if(connectedUsers + 1 > maxUsers){ // check if the new connection will exceed the max connections allowed
socket.disconnect(); // if so, disconnect the user and exit https://stackoverflow.com/a/5560187/11518920
return;
}
connectedUsers++; // otherwise + 1 to the connectedUsers
socket.on('data', function (data) {
socket.broadcast.emit('data', data)
});
socket.on('disconnect', function () {
connecteUsers--; // on a disconnected decrease the connectedUsers count
console.log("disconnect")
});
});
推荐阅读
- c# - 执行从 C# 到 EuroTruck 的密钥输出不起作用(PostMessage、user32.dll)
- statistics - 为什么 Grafana 不向我显示正确的计数?
- oracle - PL/SQL代码出错,无法理解代码中的错误和错误
- c# - C#中字符串解析的正则表达式
- java - 添加第二条记录时休眠 OneToMany 错误
- python - 如何复制工作簿末尾而不是开头的工作表?
- ios - 我应该如何在 RxSwift Singles 中正确使用保护语句?
- http - Delphi ServerSocket 对客户端的响应
- php - 如何输出 WordPress 小部件以使标题显示在内容下方而不是上方?
- python - 在文件名 (yyyy/mm/dd) 中查找日期/财务季度,然后将文件名中的日期更改为 yyyy/mm/dd + 3 个月