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

本来比较传统的实时查询数据库更新是在前端 ajax 来轮询,websocket 如果来做数据库变动监测还是要在后台实时请求数据库,所以 websocket 出来的意义就是为了节省每次重发 http 请求的带宽吗?

(我的需求不是说数据库有变化就通知,而是我主动发起搜索时才开始检测,而且数据库更新并不是由我控制的,其他地方更新数据库我无法得到消息,所以没办法实现数据库更新时触发事件的流程,所以是不是不适合使用websocket?)
阅读 5.6k
1 个回答

Websocket是HTML5中的新的协议,基于TCP,全双工的通信,就是允许服务器主动发送信息给客户端。
ajax轮询是模拟一个长连接;虽然也可以实现实时查询的效果,但是ajax轮询走HTTP,每次都要发起HTTP请求,浪费带宽是肯定的;而且,HTTP从前端发起,后端是被动的,所以后端无法主动向前端推送消息.

你的需求是主动发起搜索时才开始监测数据库,如果只是这样,那你就可以ajax轮询,当然也可以直接建立WebSocket连接,定时向后端发送查询指令.

我觉得你应该是理解成了,前后端建立WebSocket连接,在后端写一个实时监控数据库的程序跑起来,一有变化时,主动推送到前端展示; 这是一种功能的实现方式,具体想怎么做,是根据你业务需要来确定的.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题