DAY 09 - 由後端主动告诉你资料更新 - websocket

回想一下开发经验,当後端资料状态有更新...

不知道大家有没有遇到,在开发的时候,如果状态更新但我们不可能要求使用者重整来看到更新资料(使用者要通灵吗,哪知道你什麽时候更新XD),这时候前端该怎麽办呢?
最直觉的的方法就是前端下个setInterval每隔10秒重覆呼叫,这种方式,学术一点的说法叫做Polling(轮询)。

Polling(轮询) - 传统易达成方式

Polling概念就是固定一段时间,就要一次资料。就像很积极(?)的PM请RD修BUG,每隔5分钟就问你修好了没?
优点:好实作(前端下几行code就解决了)
缺点:

  1. 浪费资源(是不管有没有更新,就是固定10秒一直从前端跟後端要资料)
  2. 无法确保更新资料的第一时间前端就会更新
    (EX:如果我每隔60秒要一次资料,但刚好第五秒状态已经更新了,後面的55秒还是要等下一次前端跟後端要资料的时候才会发现)

基於这种令人有点浪费资源又比较不智慧(?)的Polling方式,在这里也提供一种server端主动通知的选择,就是我们今天要谈的webSocket拉~

WebSocket

WebSocket和http一样,是一种网路传输协定。但他能解决http的缺点,http只能有client端发起request。websocket不同於http,Client端与Server端只需要完成一次交握,就可以一直建立连线,让资料更有效率地交换。也因此,当後端发现资料状态更新,就能主动通知前端,前端收到这个讯号後,就可以做对应的处理,如重新打一次API在取得一次资料,更新目前前端画面的资料。

  • 优点:资源节省、即时性(资料更新马上通知前端,让前端保持最新的资料状态)
  • 缺点:server维护成本和前期开发较高

比较一下http和websocket:

一般websocket的请求网址如下

ws://www.testWebsocket.com

wss://www.testWebsocketcom //SSL加密後:ws -> wss 

明天我们继续介绍websocket在前端的实作与後端的配合吧~~


<<:  DAY 12- 公钥密码学(非对称式加密)

>>:  大数据平台:技术架构 - 相关技术列举

【第十七天 - Flutter Cloud Messaging(上)】

前言 今日的程序码 => GITHUB 这次要来介绍 Flutter 的 Cloud Mess...

【第二十一天 - Javascript】

Q1. 什麽是 Javascript ? Javascript 是一种脚本语言,可以动态的更新页面内...

[Day11] THM Bounty Hacker

今天来打 Try Hack Me 上面的,Bounty Hacker 题目,主要使用了爆破 ssh ...

React.js 职场实战!图片 Infinite List

一天的开始 还记得吗?你是负责 Imager 的前端工程师,上次做了 Lazy Loading 改...

[D06] OpenCV 介绍与用法

OpenCV 广泛被应用在对目标进行辨识、测量、纪录等,并更进一步的进行影像处理! 读取图片 由於 ...