将JaxRS REST服务与WebSockets集成

时间:2015-04-21 23:54:57

标签: java rest websocket jax-rs publish-subscribe

我正在尝试开发一个实现发布商订阅模式的社交网络(有点像Twitter一样):用户可以关注他人,因此在发送他们的关注者的新发布时会收到通知。

我现在拥有的是一个使用JaxRS实现的REST服务,运行在Tomcat 7上,提供登录,注册,获取配置文件数据和提交帖子的服务。 Servlet映射通过web.xml

完成

My JaxRS app config

RestServices

Web.xml

但是应用程序的重量来自pubsub部分。这就是事情变得混乱的地方。

在谈到技术和实现之前,这个pubsub的生命周期:

让A和B成为应用程序的一些用户,A跟随(订阅)B。

  1. 导航到他的"时间线",因此在服务器中注册WebSocket端点,当他被任何人发布任何内容时,他将从该端点接收通知。 (A,他自己,会成为话题吗?)
  2. B发布新帖子,通过HTTP POST / post发送给JaxRS服务。
  3. 服务器将发布存储在数据库中,然后通过WebSocket将其发送给侦听订阅者。当A活着并且正在倾听时,该出版物通过他的WebSocket /主题发送。
  4. A会收到有关新出版物的通知。
  5. 我使用过Java内置WebSockets(javax.websocket),Spring websockets(通过STOMP)和内置的JavaScript以及SockJS。我知道JaxRS有一个叫做服务器发送事件的东西,就像websockets一样,但我对如何初始化和使用它们绝对不知所措。

    我的怀疑:

    1)我可以"混合"例如,使用我的JaxRS服务器的Spring Websockets以及如何初始化它?

    2)使用JaxRS和SSE,我可以在服务器上动态创建WS端点吗?

    提前致谢

1 个答案:

答案 0 :(得分:4)

最后使用泽西岛的服务器发送事件做了一个解决方法,虽然不支持IE,但是可以满足我的需要

以下是SSEProviderSSEDispatcher

的代码

Gradle dependency

前端connectionhandlers

HTML5 SSE

上的一些文档