Я использую игровой фреймворк с Scala, Akka и websockets для интерфейса. Я хочу создать сокет для уведомлений для пользователей. Как я могу подключить actorRef с идентификаторами пользователя и проверить, находится ли он в сети или нет?проверка пользователя онлайн или не воспроизведение akka websockets
ответ
Вместо того, чтобы думать, «является ли пользователь в сети или нет», просто подумайте, как работают веб-камеры. Интерфейс должен инициировать соединение, поэтому вы автоматически получаете информацию о том, что пользователь подключен к сети (точнее, веб-браузер с зарегистрированным пользователем).
Я бы создал одного актера, который является координатором всех других актеров веб-камеры (актеров, которые непосредственно обрабатывают веб-раскладку). У этого координатора была бы карта userId для Seq [ActorRef]. Это карта, где значения Seq [_], поскольку пользователь может одновременно открывать несколько вкладок браузера (многие actorRefs соответствуют одному userId), и вы должны правильно это обработать. Всякий раз, когда клиент инициирует соединение, будет создан новый актер веб-каталога. В начале этого актера вы можете зарегистрировать его для актера-координатора (переопределить preStart). Когда актер веб-камеры уничтожен (соединение веб-сокета было закрыто), отмените его. Регистрация/отмена регистрации в координаторе приводит к добавлению/удалению actorRef этого websocket к карте.
Чтобы отправить уведомление пользователю (в браузер, в котором клиент входит в систему), отправьте сообщение участнику-координатору, содержащему userId (и остальную часть уведомления, конечно). Этот актер найдет всех участников websocket на карте пользователем и передаст им сообщение.
Техническая сторона WebSockets в Play описан в документации, которые вы, вероятно, уже видели ->https://www.playframework.com/documentation/2.5.x/ScalaWebSockets
обновление: Уточнено, что по actorRefs
я имел в виду Seq [ActorRef].
- 1. Проверка состояния пользователя онлайн
- 2. Проверка онлайн-статуса пользователя facebook
- 3. Проверка онлайн-кода,
- 4. VLC-can't воспроизведение онлайн-видео
- 5. Перемещение из socko в akka-http websockets
- 6. Играть Scala Akka WebSockets изменение актер путь
- 7. Проверка ввода пользователя или
- 8. Воспроизведение онлайн-аудиофайла в Java
- 9. Когда сервер знает пользователя онлайн или офлайн
- 10. Воспроизведение больших файлов AVI онлайн с субтитрами
- 11. Websockets или AJAX или оба?
- 12. Воспроизведение аудио с использованием онлайн-компилятора
- 13. Укажите, если онлайн пользователя
- 14. Akka Peer-to-Peer (Remoting) vs. Client-Server (Websockets)
- 15. Ajax или Websockets для небольших передач
- 16. Длинные опросы или WebSockets
- 17. WebSockets, как обрабатывать 2 или более одинаковых окна пользователя
- 18. Воспроизведение онлайн видео один на один
- 19. Проверка идентификатора пользователя
- 20. Проверка состояния сервера - онлайн/оффлайн
- 21. Как отслеживать онлайн-статус пользователя?
- 22. Онлайн потоковое воспроизведение изображений (MJPEG) не работает в IE 11
- 23. Akka-Http Websockets: Как отправить потребителям тот же поток данных
- 24. Как создать онлайн-руководство пользователя?
- 25. LR (1) парсер онлайн-проверка
- 26. Проверка Пользователь онлайн Джанго 1,10
- 27. Akka: UntypedActor или актер?
- 28. Пользователь онлайн-пользователя приложения GAE
- 29. akka - проверка конкретной записи в журнале
- 30. Quickblox Статус пользователя онлайн IOS
Вместо сохранения actorRefs координатору, могу ли я сохранить его в базе данных? –
Уверен, поэтому вместо актера-координатора у вас будет служба, которая извлекает рефералы для данного пользователя из базы данных всякий раз, когда вы нажимаете какое-либо уведомление. Затем вы отправите это уведомление каждому из этих референтов. –
Я пытался добавить службу, но я получаю исключение при запуске сервисного актера. Пожалуйста, дайте мне несколько ссылок, чтобы я мог понять это, спасибо –