API是應用程式介面的縮寫,是一組用於構建軟體應用程式的例程,協定和工具。
一些重要的功能是 -
Web Socket解決了REST或HTTP的一些問題 -
雙向
HTTP是一種單向協定,用戶端始終發起請求。伺服器處理並返回響應,然後用戶端使用它。Websocket
是一種雙向協定,其中沒有預定義的訊息模式,例如請求/響應。用戶端或伺服器可以向另一方傳送訊息。
全雙工
HTTP允許請求訊息從用戶端轉到伺服器,然後伺服器向用戶端傳送響應訊息。在給定時間,用戶端正在與伺服器通訊,或者伺服器正在與用戶端通訊。Websocket允許用戶端和伺服器相互獨立地進行通訊。
單TCP連線
通常,為HTTP請求啟動新的TCP連線,並在收到響應後終止。需要為另一個HTTP請求/響應建立新的TCP連線。對於Web Socket,使用標準HTTP升級機制升級HTTP連線,並且用戶端和伺服器通過相同的TCP連線進行通訊以進行Web Socket連線的生命週期。
下面給出的圖表顯示了為恆定有效負載大小處理N個訊息所花費的時間(以毫秒為單位)。
以下是為此圖表提供的原始資料 -
上面給出的圖表和表格顯示REST開銷隨著訊息數量的增加而增加。這是真的,因為需要啟動和終止許多TCP連線,並且需要傳送和接收許多HTTP頭。
最後一列特別顯示了完成REST請求所需時間的倍增因子。
第二個圖顯示了通過改變有效負載大小來處理固定數量的訊息所花費的時間。
以下是為此圖表提供的原始資料 -
此圖表顯示處理REST端點的請求/響應的增量成本是最小的,並且大部分時間花費在連線啟動/終止和遵守HTTP語意上。
結論
Web Socket是一種低階協定。包括簡單的請求/響應設計模式,如何建立/更新/刪除資源需求,狀態程式碼等都要建立在它之上。所有這些都為HTTP定義良好。
Web Socket是一種有狀態協定,而HTTP是無狀態協定。Web通訊端連線可以在單個伺服器上垂直擴充套件,而HTTP可以水平擴充套件。Web Socket水平擴充套件有一些專有解決方案,但它們不是基於標準。HTTP附帶了許多其他好東西,如快取,路由和多路複用。所有這些都需要在Web Socket之上定義。