HTTP協議
1. 非持久協議
- HTTP的生命周期通過Request來界定,也就是一個Request 一個Response,那么在HTTP1.0中,這次HTTP請求就結束了。
- 在HTTP1.1中,有一個keep-alive,即,在一個HTTP連接中,可以發送多個Request,接收多個Response
- 總的來說,在HTTP中永遠是一個request只能有一個response。
2. 被動性
- response是被動的,不能主動發起。即,服務端無法主動推送信息給客戶端。
3. 無狀態性
- 通俗的說就是,服務器因為每天要接待太多客戶了,是個健忘鬼,你一掛電話,他就把你的東西全忘光了,把你的東西全丟掉了。你第二次還得再告訴服務器一遍。
WebSocket
1. 與HTTP的關系
- WebSocket與HTTP都是協議,關系如下:
WebSocket與HTTP的關系
2. 實現實時信息傳遞的方式
- ajax輪詢
- long poll
- WebSocket
3. ajax輪詢
- 原理:讓瀏覽器每隔幾秒發送一次請求,詢問服務器是否有新信息。
- 缺點:需要服務器有很快的處理速度和資源。(速度)
4. long poll,又叫長連接或長輪詢
- 原理:采取阻塞模型(一直打電話,沒收到就不掛電話),即,客戶端發起連接后,如果沒消息,就一直不返回Response給客戶端。直到有消息才返回,返回完之后,客戶端再次建立連接,周而復始。
- 缺點:需要有很高的并發,也就是說同時接待客戶的能力。(場地大小)
5. WebSocket
- 解決了HTTP的被動性,當服務器完成協議升級后(HTTP->Websocket),服務端就可以主動推送信息給客戶端。
- 做到了只需要經過一次HTTP請求,就可以做到源源不斷的信息傳送了。