Laravel 5.1 Session и Socket.IO + Redis – отправка уведомлений зарегистрированным пользователям (пользователям) и группе пользователей

Я работаю над проектом, где я хочу внедрять уведомления в режиме реального времени для определенной группы пользователей (с ролью администратора), и после некоторых исследований я понял, что мне понадобится сеанс, чтобы узнать, какие пользователи вошли в систему (по умолчанию они анонимны).

Кроме того, мне нужно будет выполнять уведомления только для определенных пользователей. (только один пользователь, например: John Doe)

Итак, мои вопросы:

  1. Как перенести сеанс / файл cookie на сторону NodeJS через Redis и затем передать уведомление?

  2. Что мне делать в точности?

  3. Любое шифрование / дешифрование?

Кто-нибудь когда-либо имел возможность реализовать что-нибудь подобное?

В Интернете почти нет информации об этом, и большинство учебных пособий слишком обычны для моего использования.

Я использую Laravel 5.1 Broadcasting для публикации некоторых уведомлений и отображения их в режиме реального времени с помощью Socket.io (версия 1.3.7). Я также использую Redis (версия 3), NodeJS (версия 5) и Express (версия 4.13).

Спасибо за прочтение!

Я выполнял (медленно) что-то подобное для веб-приложения с использованием Autobahn и WAMP , связанного с ним протокола и маршрутизатора. В настоящее время у меня около пяти различных сервисов (некоторые из них написаны на PHP, некоторые из них в NodeJS), а также клиенты, которые общаются в режиме реального времени.

Самое приятное в WAMP заключается в том, что он инкапсулирует как удаленные вызовы процедур (RPC), так и модели публикации / подписки (PubSub) для связи.

Моя схема аутентификации немного клонирована: на каждой странице веб-приложения Laravel есть значение токена, которое уникально для пользователя и генерируется при входе в приложение Laravel. Javascript использует это значение токена для аутентификации, когда клиент подключается к маршрутизатору WAMP – если это недопустимый (или устаревший) токен, соединение отклоняется.

Что касается ограничения уведомлений конкретным пользователям или группам, один простой способ сделать это – обернуть соответствующий JS-код в функцию, которая только вызывается (или выводится только клиенту в шаблоне клинка), если у пользователя есть соответствующие разрешения.

Наконец, мое приложение строго для использования внутри нашего брандмауэра, поэтому я не исследовал использование шифрования / дешифрования.