本来比较传统的实时查询数据库更新是在前端 ajax 来轮询,websocket 如果来做数据库变动监测还是要在后台实时请求数据库,所以 websocket 出来的意义就是为了节省每次重发 http 请求的带宽吗?
(我的需求不是说数据库有变化就通知,而是我主动发起搜索时才开始检测,而且数据库更新并不是由我控制的,其他地方更新数据库我无法得到消息,所以没办法实现数据库更新时触发事件的流程,所以是不是不适合使用websocket?)
本来比较传统的实时查询数据库更新是在前端 ajax 来轮询,websocket 如果来做数据库变动监测还是要在后台实时请求数据库,所以 websocket 出来的意义就是为了节省每次重发 http 请求的带宽吗?
(我的需求不是说数据库有变化就通知,而是我主动发起搜索时才开始检测,而且数据库更新并不是由我控制的,其他地方更新数据库我无法得到消息,所以没办法实现数据库更新时触发事件的流程,所以是不是不适合使用websocket?)
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
5 回答814 阅读
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
Websocket是HTML5中的新的协议,基于TCP,全双工的通信,就是允许服务器主动发送信息给客户端。
ajax轮询是模拟一个长连接;虽然也可以实现实时查询的效果,但是ajax轮询走HTTP,每次都要发起HTTP请求,浪费带宽是肯定的;而且,HTTP从前端发起,后端是被动的,所以后端无法主动向前端推送消息.
你的需求是主动发起搜索时才开始监测数据库,如果只是这样,那你就可以ajax轮询,当然也可以直接建立WebSocket连接,定时向后端发送查询指令.
我觉得你应该是理解成了,前后端建立WebSocket连接,在后端写一个实时监控数据库的程序跑起来,一有变化时,主动推送到前端展示; 这是一种功能的实现方式,具体想怎么做,是根据你业务需要来确定的.