Assisti ao vídeo do Vinícius Dias no YouTube (Swoole PHP: Criando um servidor de WebSocket https://www.youtube.com/watch?v=GCECSLtT49U). Queria uma ideia de como tornar o chat privado, separando em salas que podem ter várias pessoas em cada uma.
No evento 'on message' seria sempre que recebe mensagem ele age. Em $mensagem->fd tem o id de quem enviou a msg.
Usaria o evento 'on open' para pegar o ID de quem acabou de se conectar? e 'on close' para pegar o id e remove-lo quando ele desconectar?
Pensei em pegar esses IDs e salvar em um DB por exemplo atrelando eles a salas especificas.
Daí acho que ao invés de fazer o foreach em $servidor->connections, pegaria a sala ao qual o id de origem da msg pertence, e buscaria os demais IDs que fazem parte da mesma sala, fazendo o loop e enviando a msg para eles, exceto para o id de origem conforme no exemplo.
Sobre o 'on open' e 'on close', se no mesmo navegador abrir múltiplas abas, cada aba seria uma nova conexão com novo ID ou o mesmo ID?
Se for, quando desconectar clicando em um botão Sair em uma aba, para sair em todas as demais, deveria atrelar todos estes IDs a um único token de sessão por exemplo, para entender que o usuário quis deslogar-se, e assim, finalizar as conexões de todas as abas.
Estas ideias dariam certo?
Grata