在 基于 DWR + ActiveMQ 的 Web 端订阅消息推送 里我实现了 Web 端订阅消息推送,然而,实际测试的时候发现速度不够,而且还不稳定,于是决定抛弃 DWR
和 ActiveMQ
,使用 Socket.IO
(封装了 WebSocket
)做前端推送,自己写逻辑实现订阅逻辑。在前端使用 Socket.IO 提供的 JavaScript 客户端,在后端把 netty-socketio 整合进基于 Spring + SpringMVC 的 Java Web 后台,作为 Socket.IO 服务端。
接下来记录我的实现,比 DWR 配起来简单多了,感人😆。
Java 实现订阅逻辑
SocketioService 负责把消息推送到相应的前端。topicSubscribers
存储每个主题连接了哪些客户端,topicContent
存储每个主题的最新消息,最新消息是解析好的 JSON 字符串,publish
事件表示有新消息推送到前端。
1 | package project.socket.service; |
前端整合
前端入口程序为:
1 | <script src="js/socket.io.js"></script> |