¿Hay alguna forma de limitar la cantidad de conexiones a un servidor socket.io desde la misma dirección IP? Por ejemplo, podría establecer el límite en 3, y luego, cuando alguien abriera 4 pestañas para unirse al servidor, tres de ellas se conectarían y la cuarta o cualquiera posterior no se conectaría.
No estoy tratando de limitar el número total de conexiones, solo para una persona.
¿Cuál es la mejor manera de hacer esto?
Editar: los servidores se ejecutan en node.js y el cliente está en js en un navegador web
Por supuesto, si el usuario tuviera VPN, la dirección IP estaría deshabilitada. Pero aún así, podría haber otra forma de hacer esto.
> Uno: cada vez que un usuario se une a la página, dale una identificación y guárdala en una variable del lado del servidor.
socket.on('connection', () => { users++ }); que sumará el número de usuarios conectados.
> Dos: cree una identificación única y cancele los " users++ " para que el usuario no se cuente nuevamente.
var users = 0; var userArray = []; var ip = /* Get the IP address here */; socket.on('connection', () => { if (users >= 3) { // The max users have arrived. (3 is the amount of users). // Do what you want to block them here. } // Check if the user's IP is equal to one in the array if (userArray.indexOf(ip) > -1) { // Cancel adding them to number of users return; } else { // Add IP to the array userArray.push(ip); users++; // Do what you want here. } });Si está utilizando Node.js para su servidor Socket, le recomiendo obtener la IP de esta manera:
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim();