1. 程式人生 > 其它 >websocket和ajax的區別(和http的區別)

websocket和ajax的區別(和http的區別)

1. 本質不同

ajax,即非同步JavaScript和XML,是一種建立互動式網頁應用的網頁開發技術;
webSocket是HTML5一種新的協議,實現了瀏覽器伺服器全雙工通訊。其本質是先通過HTTP/HTTPS協議進行握手後建立一個用於交換資料的TCP連線,服務端與客戶端通過此TCP連線進行實時通訊。


2. 生命週期不同
websocket建立的是長連線,在一個會話中一直保持連線;而ajax是短連線,資料傳送和接收完成後就會斷開連線。


3. 適用範圍不同
websocket一般用於前後端實時資料互動(例子:後端有狀態更新後,及時告訴前端,而不用等前端發起請求);而ajax前後端非實時資料互動。


4. 發起人不同
ajax技術需要客戶端發起請求(自己請求回來的資料使用者自己看);而websocket伺服器和客戶端可以相互推送資訊(使用者A請求返回來的東西A使用者可以看B使用者也可以看;如果是屬於公共的那大家都可以看)


5. 用法不同
ajax:

$.ajax({
       type:"post",
       url:"http://localhost:8080/target",
       data:"state = yes",
       dataType:"json",
       success:funciont(data){
         ...
       }
});

websocket:

var monitor = new WebSocket("ws://"+ip+path)
onOpen()、onMessage()、onClose()

https://segmentfault.com/a/1190000021741131



WebSocket 和HTTP的區別及原理

https://zhuanlan.zhihu.com/p/40381471

http協議是用在應用層的協議,他是基於tcp協議的,http協議建立連結也必須要有三次握手才能傳送資訊。

http連結分為短連結,長連結,短連結是每次請求都要三次握手才能傳送自己的資訊。即每一個request對應一個response。長連結是在一定的期限內保持連結。保持TCP連線不斷開。客戶端與伺服器通訊,必須要有客戶端發起然後伺服器返回結果。客戶端是主動的,伺服器是被動的。

WebSocket他是為了解決客戶端發起多個http請求到伺服器資源瀏覽器必須要經過長時間的輪訓問題而生的,他實現了多路複用,他是全雙工通訊在webSocket協議下客服端和瀏覽器可以同時傳送資訊

建立了WebSocket之後伺服器不必在瀏覽器傳送request請求之後才能傳送資訊到瀏覽器。。而且資訊當中不必在帶有head的部分資訊了與http的長連結通訊來說,這種方式,不僅能降低伺服器的壓力。而且資訊當中也減少了部分多餘的資訊