Wdrażałem (powoli) coś podobnego dla aplikacji internetowej za pomocą Autobahn i WAMP, jest to powiązany protokół i router. Obecnie mam około pięciu różnych usług (niektóre napisane w PHP, niektóre w NodeJS) oraz wszystkie klienty komunikujące się w czasie rzeczywistym.
Zaletą WAMP jest to, że zawiera on zarówno zdalne wywołania procedur (RPC), jak i modele publikowania/subskrybowania (PubSub) do komunikacji.
Mój schemat uwierzytelniania jest trochę kłopotliwy:na każdej stronie aplikacji internetowej Laravel znajduje się wartość tokena, która jest unikalna dla użytkownika i generowana po zalogowaniu się do aplikacji Laravel. Javascript używa tej wartości tokena do uwierzytelniania, gdy klient łączy się z routerem WAMP - jeśli jest to nieprawidłowy (lub przestarzały) token, połączenie jest odrzucane.
Jeśli chodzi o ograniczenie powiadomień do określonych użytkowników lub grup, jednym prostym sposobem na to byłoby umieszczenie odpowiedniego kodu JS w funkcji, która jest wywoływana (lub jest wyprowadzana do klienta tylko w szablonie kasetowym), jeśli użytkownik ma odpowiednie uprawnienia.
Wreszcie moja aplikacja jest przeznaczona wyłącznie do użytku wewnątrz naszej zapory sieciowej, więc nie badałem za pomocą szyfrowania/odszyfrowywania.