我正在尝试开发一个实现发布-订阅模式的社交网络(有点像 Twitter 的做法):用户可以关注其他人,因此当他们的关注者发布新内容时会收到通知。
我现在拥有的是一个使用 JaxRS 实现的工作 REST 服务,运行在 Tomcat 7 上,提供登录、注册、获取配置文件数据和提交帖子的服务。通过 web.xml 完成 Servlet 映射
但是应用的权重来自pubsub部分。这就是事情变得困惑的地方。
在讲技术和实现之前,这个pubsub的生命周期:
假设 A 和 B 是应用程序的一些用户,A 关注(订阅)B。
- A 导航到他的“时间线”,因此在服务器中注册一个 WebSocket 端点,当他所订阅的任何人发布任何内容时,他将从该端点接收通知。 (A,他自己,会是主题吗?)
- B 发布一个新帖子,它通过 HTTP POST/post 发送到 JaxRS 服务。
- 服务器将发布存储在数据库中,然后通过 WebSocket 将其发送给监听订阅者。由于 A 还活着并且正在收听,因此通过他的 WebSocket/主题发送发布。
- A 收到新发布的通知。
我使用过 Java 内置 WebSockets (javax.websocket)、Spring websockets(通过 STOMP)和内置 JavaScript 和 SockJS。我知道 JaxRS 有一个叫做服务器发送事件的东西,它的作用类似于 websockets,但我完全不知道如何初始化和使用它们。
我的疑问:
1) 我可以将 Spring Websockets 与我的 JaxRS 服务器“混合”吗?它是如何初始化的?
2) 使用 JaxRS 和 SSE,我可以在服务器上动态创建 WS 端点吗?
提前致谢
最佳答案
最终使用 Jersey 的服务器发送事件解决了这个问题,虽然 IE 不支持,但可以满足我的需要
这是 SSEProvider 的代码和 SSEDispatcher
和前端connection和 handlers
还有关于 HTML5 SSE 的一些文档
关于java - 将 JaxRS REST 服务与 WebSocket 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29785258/