Estoy desarrollando una aplicación con Socket.IO que debe autentificarse si el usuario puede unirse a una sala.
lado del cliente:
var socket = io('http://<?php echo $_SERVER['HTTP_HOST'];?>:3000');
socket.on('connect', function() {
var req = [current_user_id,secret_hash];
socket.emit('join', req);
});
El servidor escucha las solicitudes de combinación de clientes, obtiene acceso a una base de datos MySQL y evalúa si el usuario puede unirse o no al canal hash solicitado:
...
if (rows.length == 1) {
socket.join(request[1]); //join on channel ID which is request[1] cell of array
}
//if not authorized, does not allow joining.
...
Tengo dos preguntas:
1) No quiero permitir la activación directa del canal por parte del cliente. Los clientes no deben poder iniciar socket.join ("sala"). ¿Cómo puedo bloquear esas solicitudes? El servidor es el único que se preocupa por la asignación de habitaciones.
2) ¿Hay alguna forma de escuchar el evento "el usuario deja su ID de canal privado"?
Gracias.