Estou implementando (lentamente) algo semelhante para um aplicativo da web usando Autobahn e WAMP, seu protocolo e roteador associado. Atualmente tenho cerca de cinco serviços diferentes (alguns escritos em PHP, alguns em NodeJS) mais os clientes todos se comunicando em tempo real.
O bom do WAMP é que ele encapsula os modelos de chamadas de procedimento remoto (RPC) e publicação/assinatura (PubSub) para comunicação.
Meu esquema de autenticação é um pouco confuso:em cada página do aplicativo da Web Laravel, há um valor de token exclusivo para o usuário e gerado ao fazer login no aplicativo Laravel. O Javascript usa esse valor de token para autenticar quando o cliente se conecta ao roteador WAMP - se for um token inválido (ou obsoleto), a conexão será recusada.
Quanto a limitar as notificações a usuários ou grupos específicos, uma maneira simples de fazer isso seria agrupar o código JS apropriado em uma função que só é chamada (ou só é emitida para o cliente no modelo blade) se o usuário tiver o permissões.
Finalmente, meu aplicativo é estritamente para uso dentro de nosso firewall, então não investiguei usando criptografia/descriptografia.