websocket 怎么实现轮询效果

2022-05-24 17:08:38 +08:00
 guzzhao

大屏数据用 websocket 获取后台数据,并定时刷新(5 秒),而且增加用户后不会重复推送,想到 3 种方法

  1. 在前端用 send 定时发送消息,后台每次收到消息进行推送,这样和 ajax 差不多
  2. 在后台 while 连接数大于 0 时推送消息
  3. 定时任务

增加用户后不会重复推送这一点没法实现,有没有比较好的实现🤔

1363 次点击
所在节点    问与答
10 条回复
xuxuxu123
2022-05-24 17:13:20 +08:00
2
sarices
2022-05-24 17:16:35 +08:00
定时任务啊,5 秒推送一次数据到客户端
sujin190
2022-05-24 17:45:06 +08:00
都 websocket 了难道不是数据有变更时推送么,为啥要定时
Terminator0826
2022-05-24 17:58:35 +08:00
我感觉你是没用对 ws ,我不知道你是不是想实时获取在线用户列表,如果是则可以在后端连接成功的钩子那广播给其他 session 当前的用户列表啊
spicecch
2022-05-24 18:02:17 +08:00
都 websocket 了怎么还轮询呀
dqzcwxb
2022-05-24 18:07:53 +08:00
后端启一个定时任务每 5 秒执行,如果当前在线用户为 0 则不推送数据否则推送
别去想着初始化+增量的方式实现,你会后悔的
Terminator0826
2022-05-24 18:10:11 +08:00
2 没搞明白,为啥是连接数> 0 时触发 push ,不是新的连接建立时 push 吗?

1 的你是想发 http 通知到 ws 然后通知到其他客户端吗,还是单纯的定时 http 请求获取数据
dcsuibian
2022-05-24 18:22:04 +08:00
增加用户不会重复推送是什么意思?
lysS
2022-05-24 18:26:34 +08:00
websocket 就是为解决异步通知、http 只能轮询的情况
guzzhao
2022-05-24 21:57:08 +08:00
@dcsuibian
@sujin190
数据来源是 api,监测不了数据变化.
就是想每 5 秒请求一下 api,得到的数据处理一下,再推到前端.我想要没用户的时候不执行,多个用户用同一个数据,但是我做的每多一个用户会多次执行,导致不到 5 秒内执行好几次推送😂

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

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

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

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

© 2021 V2EX