Я пытаюсь разработать социальную сеть, которая реализует шаблон публикации издателя (вроде Twitter): пользователи могут следить за людьми, поэтому их уведомляют, когда отправляется новая публикация их последователей.Интеграция службы REST Rax с помощью WebSockets
Все, что я имею сейчас, - это работающая служба REST, реализованная с помощью JaxRS, работающая над Tomcat 7, предлагающая услуги для входа в систему, регистрации, получения профилей и отправки сообщений. Отображение Servlet осуществляется через web.xml
Но вес приложения происходит от PubSub части. И здесь все становится грязным.
Прежде чем говорить о технологии и реализации, жизненный цикл этого PubSub:
Позволять А и Б некоторых пользователей приложения и А следует (подписан на) B.
- переходит на его «временную шкалу», поэтому регистрирует конечную точку WebSocket на сервере, откуда он получит уведомления, когда любой из людей, которых он подозревал, что-либо публикует. (A, сам, был бы темой?)
- B публикует новое сообщение, оно отправляется службе JaxRS через HTTP POST/post.
- Сервер хранит публикацию в базе данных, а затем отправляет ее подписчикам прослушивания через WebSocket. Поскольку А жив и слушает, публикация отправляется через его WebSocket/тему.
- A получает уведомление о новой публикации.
Я работал с Java-встроенными Web-сокетами (javax.websocket), Spring websockets (через STOMP) и JavaScript как встроенный, так и SockJS. Я знаю, что JaxRS имеет что-то, называемое событиями, отправленными сервером, которые действуют как веб-узлы, но я абсолютно потерял, как их инициализировать и работать с ними.
Мои сомнения:
1) Могу ли я «смешать» Spring WebSockets например с моим JaxRS сервером и как бы это быть инициализированы?
2) С помощью JaxRS и SSE я могу динамически создавать оконечные точки WS на сервере?
Заранее спасибо
Не совсем полный ответ, но вам может потребоваться верхняя проверка Атмосфера, которая поддерживает 1) и 2) https://github.com/Atmosphere/atmosphere. Просто взгляните на http://goo.gl/s7OwGc – jfarcand
oh nice, собираюсь попробовать, опубликует ответ, если я получу, чтобы решить его, спасибо! – RecuencoJones