集群环境websocket如何处理通知到每个server问题
测试在两个server下部署J2ee应用;页面评论通知使用websocket处理,需要集中管理每个websocket连接,以保证能通知到每个打开的评论页面;javax.websocket.server.ServerEndpoint 方式tomcat实现websocket。
现在的方案:将每个连接保存到一处redis里,实现连接集中管理;
碰到的问题:websocket建立连接的对象 org.apache.tomcat.websocket.WsSession没有序列化接口。不能序列化那么redis那里存会碰到问题;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
单独起一个线程异步去订阅消息
百度下jgroups就知道怎么用了
回复
生产上不能这样玩
我使用了redis,进行订阅和发布,但是订阅方法是阻塞方法,阻碍了websocket的关闭连接,所以想问下你是怎么使用jgroups解决这个websocket的问题的
1楼或3楼道方式都可以.我使用了jgroups,
其实你根本不知道在说什么!
redis
确实是一个办法,把主动变成被动!
你的解决方案思路不对,redis有订阅/发布功能,你要把redis当做消息队列来使用,每个websocket连接都要订阅一个频道,要发送消息时就发布消息到该频道
引用来自“rockingMan”的评论
接受评论请求的服务器,发消息(多播)到各服务器,服务器遍历socketsession,发送消息
接受评论请求的服务器,发消息(多播)到各服务器,服务器遍历socketsession,发送消息