服务器怎么通过 websocket 主动向前端推送数据?向各位大佬请教

2018-07-23 09:44:41 +08:00
 Rieouu

我的服务器通过 socket 接收到数据,请问怎么通过 websocket 实现后台有数据就推送到前台呢?看了 websocket 的例子,通过 onMessage 方法都是需要前台有消息请求才会触发这个方法,有没有主动的 write 方法直接写到前台呢,希望有做过这方面问题的大佬赐教

15108 次点击
所在节点    程序员
63 条回复
Rieouu
2018-07-23 15:05:07 +08:00
@zrlhk 主要我后台使用 Java 做的,Java 要是有类似 workman 的框架就好了
zchlwj
2018-07-23 15:06:34 +08:00
@Rieouu spring-boot websocket 现成的轮子
inoki
2018-07-23 15:07:44 +08:00
@crist swoole 有个 server 主动 push 的方法可以实现
Rieouu
2018-07-23 15:19:30 +08:00
@zchlwj 可以主动 push 吗,我读书少别骗我哈
pipixia
2018-07-23 16:49:29 +08:00
记得 tomcat 有现成的 websocket 直接在 onMessage 里面遍历 session 发过去就行了
Rieouu
2018-07-23 17:11:57 +08:00
@pipixia onmessage 是需要前端发消息来触发这个方法,可是我的数据来自于服务器,不能直接调用 onmessage 发送吧
tilv37
2018-07-23 18:05:04 +08:00
应该可以在服务端维护一个客户端的 map 啊,然后取出制定客户端的连接推消息就行了
mary9
2018-07-23 19:25:04 +08:00
用过 socket.io ,也研究过这个问题。socket.io 主动发送的话,有两个,一个是一开始客户端连接到服务器,然后有一个监听连接的事件,在这个连接事件中写你要的发送给客户端的东西。后面的话,只能是通过一个定时器了,我之前写的是 setInterval,定时向客户端发送需要的数据。不过这个方法需要在断开连接的时候清除掉你生成的 setInterval,不然 CPU 的内存会上升的。后面也没想到其他的方法,我再研究一下来补坑。
limbo0
2018-07-23 19:35:08 +08:00
单端推送可以看看 sse
xm0625
2018-07-23 19:57:28 +08:00
可以去看下我 BusHelper 项目 中间用到了 WebSocket 技术
Rieouu
2018-07-23 20:18:22 +08:00
@mary9 期待您研究的救国哦
Rieouu
2018-07-23 20:19:02 +08:00
@mary9 期待您研究的结果哈
Rieouu
2018-07-23 20:19:40 +08:00
@xm0625 去看大佬的项目~
pipixia
2018-07-23 22:12:50 +08:00
@Rieouu 你总有地方放 session 吧 直接遍历他发送消息
Rieouu
2018-07-23 22:39:20 +08:00
@pipixia session 是放在一个容器对象里面的,我来试试看
wdlth
2018-07-23 23:18:44 +08:00
把 Session 存起来,找到 Session 就发
Rieouu
2018-07-24 08:40:29 +08:00
@wdlth 大佬说的是对的,我按照这个试验了是可行的
kba977
2018-07-24 10:33:12 +08:00
hosaos
2018-07-24 11:01:35 +08:00
netty socket io 包含了自动重连一些封装好的功能 可以看看
Rieouu
2018-07-24 13:13:34 +08:00
@hosaos 谢谢我看一下哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473206

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX