所以 Websocket 的本质是把前端的轮询放到后端了?

2017 年 3 月 27 日
 gy134340

本来比较传统的实时查询数据库更新是在前端 ajax 来轮询,现在看了一下 socket.io 的实现 websocket 如果来做数据库变动监测还是要写 setTimeInterval() 之类的,所以 websocket 出来的意义就是为了节省每次重发 http 请求的带宽吗? 求大神指导如何实现 实时监测数据库字段的更新并发送给前端,难道真的要换 PostgreSQL 这样支持 listen/notify 的数据库?

9820 次点击
所在节点    问与答
33 条回复
misaka19000
2017 年 3 月 28 日
楼主你需要读一下《 Unix 网络编程》
gy134340
2017 年 3 月 28 日
@wwqgtxx OK ,假设是两个单独的应用,一个去录入数据到数据库,另一个只有对数据库读这样,两个后端的代码分开的
huijiewei
2017 年 3 月 28 日
@gy134340 分开又怎样,已经跟你说了用消息队列了
morethansean
2017 年 3 月 28 日
@gy134340 没有消息队列吗?很常见的情况啊。
wwqgtxx
2017 年 3 月 28 日
@helloworld12 socket.io 同时支持长轮询, xhr 轮询, websocket 底层

@gy134340 消息队列呀,大家说了那么多遍,你都视而不见是吧,不要把目光局限在数据库中嘛
panlilu
2017 年 3 月 28 日
不用消息队列的话,试试 rethinkdb?
gy134340
2017 年 3 月 28 日
ok, 谢谢诸位老哥
z4none
2017 年 3 月 28 日
对于你这个场景,就好比自己轮询拿快递和送快递上门的区别。试想多个前端轮询是什么情况。
WispZhan
2017 年 3 月 28 日
Websocket 难道不是目的是让服务器推送更容易吗?话说为什么要轮询……
服务端可以根据数据变更的 Event 来主动向客户端发起 Push ,要么直接 push 变更数据,要么 push 一个更新请求然后让客户端自己查询。
qiayue
2017 年 3 月 28 日
@gy134340 让录入数据的提供消息
Finest
2017 年 3 月 28 日
简单使用 redis 的 pub/sub 就不用轮询了
aleen42
2017 年 3 月 28 日
其实还是挺有用的,且不说实时监测数据库更新,我之前做的监听二维码扫描的简单需求,若用轮询可以发现服务器所需要处理的请求会非常之多,更何况当时是用的 PHP 做后端,压力可想而知。 web socket 长链接的方案就是为了解决诸如此类问题,因此不要轻视 HTTP 请求量的减少,这意义匪浅。
gy134340
2017 年 3 月 28 日
@aleen42 本狗也是做这个,检测扫描二维码

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

https://v2ex.ih06.com/t/350755

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

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

© 2021 V2EX