J'ai implémenté (lentement) quelque chose de similaire pour une application Web utilisant Autobahn et WAMP, c'est le protocole et le routeur associés. J'ai actuellement environ cinq services différents (certains écrits en PHP, d'autres en NodeJS) plus les clients communiquant tous en temps réel.
L'avantage de WAMP est qu'il encapsule à la fois les appels de procédure à distance (RPC) et les modèles de publication/abonnement (PubSub) pour la communication.
Mon schéma d'authentification est un peu compliqué :sur chaque page de l'application Web Laravel, il y a une valeur de jeton qui est unique à l'utilisateur et générée lors de la connexion à l'application Laravel. Le Javascript utilise cette valeur de jeton pour s'authentifier lorsque le client se connecte au routeur WAMP - s'il s'agit d'un jeton invalide (ou obsolète), la connexion est refusée.
En ce qui concerne la limitation des notifications à des utilisateurs ou des groupes spécifiques, une façon simple de le faire serait d'envelopper le code JS approprié dans une fonction qui n'est appelée (ou n'est envoyée au client que dans le modèle de lame) si l'utilisateur a le bon autorisations.
Enfin, mon application est strictement destinée à être utilisée à l'intérieur de notre pare-feu, je n'ai donc pas étudié l'utilisation du chiffrement/déchiffrement.