Olá Átila,
Então, isso foge um pouco da funcionalidade do Websocket e entra mais na sua lógica.
O Websocket como servidor e cliente geralmente possui 4 eventos: abertura de conexão, encerramento de conexão, mensagem, erro.
Tudo que se envie, independente da direção, é um evento de mensagem.
Para implementar canais, salas privadas, etc. É por sua conta. Você precisa criar um padrão de mensagem, por exemplo em JSON e tratar isso.
Para criar canais, por exemplo, no seu servidor quando alguem se conecta você não vai colocar a conexão em uma lista com todas conexões, você precisaria criar uma lista para cada canal, por exemplo. Assim quando a mensagem for pra um canal especifico, você interage com apenas essa lista.
Ao mesmo tempo que no frontend, você precisa entender qual o destino daquela mensagem e tratar adequadamente.
Um exemplo famoso de biblioteca que resolve esse problema (salas, canais, etc) é Socket.io. Ela possui oficialmente servidor apenas em Node. Mas ele disponibiliza de forma simples a possibilidade de criar canais, salas, etc. No fundo ela utiliza WebSocket, mas abstrai todas esses recursos e te entrega de forma facilitada. Pode dar uma olhada para entender um pouco melhor sobre o assunto.