03.08 WebSocket有沒有可能取代AJAX?

前端全棧


軟件項目開發中,往往需要前端與後端進行數據交互,而數據交互有兩種最常見的形式Ajax和WebSocket。一般而言,前後端實時的數據交互使用WebSocket,而非實時數據的交互用Ajax的居多。

既然都是數據交互方案,曾有人稱WebSocket可以替代Ajax,真的是這樣嗎?

Ajax 與 WebSocket 對比

1、Ajax是一處異步數據傳輸技術

Ajax是異步JavaScript和XML技術的實現,通過Ajax可以讓網頁異步更新數據(不需要重新加載整個頁面),對頁面中的部分數據進行更新,而且不會阻塞。

現在所有瀏覽器對於Ajax技術支持都很好,基本上每個網站都會用到此技術。

2、WebSocket是HTML5推出的新協議

WebSocket是隨著HTML5推出的一種新的協議,通過WebSocket可實現瀏覽器端與服務端的雙向實時通信(如聊天室),意味著服務器端可以主動推送數據至客戶端。

現在大部分瀏覽器支持WebSocket協議,但依舊有些低版本的瀏覽器是不支持此協議的。

WebSocket未來可以替代Ajax,但當下不行

WebSocket相較於Ajax有著實時性好、性能高的優點,未來會成為主流技術,但當前不行,畢竟WebSocket對瀏覽器是有要求的。


以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我瞭解更多科技知識!

網絡圈


不會替代

WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議。

WebSocket 使得客戶端和服務器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在 WebSocket API 中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。

在 WebSocket API 中,瀏覽器和服務器只需要做一個握手的動作,然後,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。

現在,很多網站為了實現推送技術,所用的技術都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務器發出HTTP請求,然後由服務器返回最新的數據給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的數據可能只是很小的一部分,顯然這樣會浪費很多的帶寬等資源。HTML5 定義的 WebSocket 協議,能更好的節省服務器資源和帶寬,並且能夠更實時地進行通訊。



爪哇程序猿


看了很多回答,沒有說到重點,http和websocket會並行存在,需求不一樣,所以不存在替代。為什麼?雖然ws可以實現所有http的功能,但是比如說新聞站,以展示為主,websocket需要保持連接,如果用ws會消耗更多服務器資源。所以,只有請求頻繁或者有需要服務器推送,才會選擇ws,否則都是http。


萬能擼Sir


Websocket只是為了再web端實時通訊業務場景下一種新的高性能技術方案,本身各具優勢,何來代替ajax可言。如果不需要實時獲取數據為什麼要使用ws來佔用服務器資源。


孟灑一


我理解是這樣的,不知道對不對,websocket是有狀態的連接,可以實現雙向通訊,但是會佔用服務器資源,ajax是客戶端發出的異步請求,完成後會釋放連接,應用場景不同。非計算機專業,回答的不對請指正!


七喜58326316


不可能取態,只是相互在應用場景的彌補


黑熊哥哥


websocket的優勢是服務端可以主動推送數據到客戶端,但是因為要保持鏈接所以對服務端資源佔用更多,所以短時間內不會取代Ajax。


花花之主


一個是長鏈接通訊,一個是異步通訊。二個不一樣場景下的技術。怎麼比?問問題的人,先弄清楚什麼是ajax什麼是websocket吧。


_惡即斬


websocket的優勢在於節約頻繁數據傳送時產生http頭產生的無效流量,優點和缺點都在於長鏈接這一個特點,現在移動客戶端很容易斷開原先的網絡重新建立連接,為了解決這個問題需要做很多處理,最終實現代碼要比ajax複雜很多


vcasm


很難,ws是無狀態的,收發你得帶上調用號,累,實際中只能做單一業務數據交換,你可以想想你所有的數據交換,你得封裝一個業務層回調你的代碼。真心累,ajax只需要一條語句。


分享到:


相關文章: