精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么有了HTTP,還需要WebSocket協議?

億佰特物聯網應用專家 ? 2023-01-12 15:54 ? 次閱讀

HTTP是基于TCP協議的,同一時間里,客戶端和服務器只能有一方主動發數據,是半雙工通信。通常,打開某個網頁,我們每點擊一次網頁上的某個選項,前端就會發送一次HTTP請求,網站返回一次HTTP響應。這種由客戶端主動請求,服務器響應的方式滿足大部分網頁的功能場景。但這種情況下,服務器不會主動給客戶端發消息。而類似網頁游戲這樣的場景,是需要客戶端和服務器之間互相主動發大量數據的。因此,我們需要一個基于TCP的新協議,即新的應用層協議WebSocket。c361815c-9186-11ed-ad0d-dac502259ad0.png

WebSocket是什么?

WebSocket 是一種用于在單個 TCP 連接上進行全雙工通信網絡協議。它使用類似于 HTTP 的握手來建立連接,然后使用單獨的持久連接來進行通信。這種方式使得 WebSocket 可以在瀏覽器和服務器之間進行實時通信,而不需要多次發送 HTTP 請求來獲取數據。這意味著連接是持久的,它一直保持打開,直到有一方主動關閉連接。這使得 WebSocket 非常適合用于實時應用程序,因為它不需要不斷地建立和關閉連接。
WebSocket怎樣建立連接?WebSocket 連接通常在客戶端(例如瀏覽器)和服務器之間建立。客戶端發送一個 HTTP 請求來建立連接,然后服務器返回一個確認消息,表示已建立連接。之后,客戶端和服務器可以通過這個連接進行雙向通信。客戶端可以向服務器發送消息,服務器也可以向客戶端發送消息。消息可以是任意的字節數組,并且可以使用任意的格式進行編碼。c36e1ea8-9186-11ed-ad0d-dac502259ad0.jpg

建立websocket連接

WebSocket 是一種必不可少的客戶端—服務器通信工具,需要充分了解其實用性并避免使用場景才能從其最大潛力中獲益。

WebSocket的實際用途

最常見的用途是在實時應用程序開發中,它有助于在客戶端持續顯示數據。由于后端服務器不斷發回此數據,WebSocket 允許在已打開的連接中不間斷地推送或傳輸此數據,使此類數據傳輸更快,并利用了應用程序的性能。
聊天應用程序開發人員在一次性交換、發布、廣播消息等操作中調用 WebSocket 。由于使用相同的 WebSocket 連接來發送或接收消息,因此通信變得簡單、輕量、快捷。在進行游戲應用程序開發的同時,服務器必須不間斷地接收數據,而不要求刷新 UI。WebSocket在不影響游戲應用程序 UI 的情況下實現了這一目標。

從上述幾個示例中,我們大概知道了在什么情況下不太適合使用,例如數據交互周期很長,甚至幾小時一次的情況或只需要一次性處理數據時,不應采用 WebSocket協議。在這些情況下,使用 HTTP 協議是一個明智的選擇。由于 HTTP 和 WebSocket 都用于應用程序通信,因此人們常常感到困惑,很難從這兩者中選擇一個。

WebSocket 與 HTTP 的選擇

WebSocket 是一種框架雙向協議。與此相反,HTTP 是一種單向協議,作用于 TCP 協議之上。由于WebSocket協議能夠支持不間斷的數據傳輸,因此主要用于實時應用程序開發。HTTP 是無狀態的,用于開發RESTful和 SOAP 應用程序。SOAP 仍然可以使用 HTTP 來實現,但是 REST 被廣泛傳播和使用。
c3870684-9186-11ed-ad0d-dac502259ad0.png

在 WebSocket 中,通信發生在兩端,這使其成為更快的協議。在 HTTP 中,連接是在一端建立的,這使得它比 WebSocket 有點慢。WebSocket 使用統一的 TCP 連接,需要一方終止連接。在它發生之前,連接保持活動狀態。HTTP 需要為單獨的請求建立不同的連接。請求完成后,連接會自動斷開。 c3975610-9186-11ed-ad0d-dac502259ad0.jpg

HTTP 長輪詢

現今對網絡數據安全性也存在更多需求,WebSocket 連接使用的是標準的 TCP 連接,因此它可以在任何支持 TCP 的網絡上使用。它使用的是 ws:// 和 wss:// 協議前綴,這些前綴可以與任何域名或 IP 地址結合使用。WebSocket 連接是可以加密的,可以使用 TLS(Transport Layer Security,傳輸層安全)協議來保護數據的安全。這種加密連接使用的是 wss:// 協議前綴,與不加密的連接使用的 ws:// 協議前綴相區別。除此之外,WebSocket 還支持安全握手協議(Secure Handshake Protocol),這使得它可以在瀏覽器和服務器之間進行加密通信。總的來說,WebSocket 具有較高的安全性,可以保護數據的安全。另外,需要注意的是,WebSocket不是基于HTTP的新協議,因為WebSocket只有在建立連接時才用到了HTTP,升級完成之后就跟HTTP不再有任何關系。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    5972

    瀏覽量

    135860
  • HTTP
    +關注

    關注

    0

    文章

    501

    瀏覽量

    31065
收藏 人收藏

    評論

    相關推薦

    含有內部ESD保護的運放,外部保護還需要加嗎?

    含有內部ESD保護的運放,外部保護還需要加嗎?因為加外部ESD保護一定的漏電流存在, 這個會使電路失去一定的精度
    發表于 09-04 06:54

    暢玩《黑神話:悟空》,除了“官配”硬件還需要注意這些......

    暢玩《黑神話:悟空》,除了“官配”硬件還需要注意這些......
    的頭像 發表于 08-30 14:58 ?384次閱讀
    暢玩《黑神話:悟空》,除了“官配”硬件<b class='flag-5'>還需要</b>注意這些......

    MES、ERP,為什么還需要QMS?

    ? MES、ERP,質量管理為什么還需要QMS? ?在制造業,質量管理始終是企業管理中永恒的主題。品質管理要想做得更好,企業必須掌握足夠多、足夠有用的數據和信息,實現質量管理信息化。很多中小企業
    的頭像 發表于 08-02 10:09 ?250次閱讀
    <b class='flag-5'>有</b><b class='flag-5'>了</b>MES、ERP,為什么<b class='flag-5'>還需要</b>QMS?

    ESP-IDF Tools Offline5.0下的離線安裝包,為什么安裝時還需要從github中下載?

    如題 我都已經下載的是離線的安裝包了為什么安裝時還需要從github中下載???? 半個小時 才下載2%
    發表于 06-13 08:14

    在freertos中,每個任務都是一個死循環,那么還需要使用看門狗嗎?

    在freertos中,每個任務都是一個死循環,那么還需要使用看門狗嗎?該怎么使用?
    發表于 05-07 06:55

    為何在HTTP協議之外,我們還需要RPC協議

    字節流可以理解為一個雙向的通道里流淌的數據,這個數據其實就是我們常說的二進制數據,簡單來說就是一大堆 01 串。純裸TCP收發的這些 01 串之間是沒有任何邊界的,你根本不知道到哪個地方才算一條完整消息。
    發表于 04-12 14:29 ?526次閱讀
    為何在<b class='flag-5'>HTTP</b><b class='flag-5'>協議</b>之外,我們<b class='flag-5'>還需要</b>RPC<b class='flag-5'>協議</b>?

    請問risc-v中斷還需要軟件保存上下文和恢復嗎?

    risc-v中斷還需要軟件保存上下文和恢復嗎?
    發表于 02-26 07:40

    RT-Thread Studio中的RT-Thread Setting中已經軟件包管理和組件服務管理了,那還需要env工具嗎?

    RT-Thread Studio中的RT-Thread Setting中已經軟件包管理和組件服務管理了,那還需要env工具嗎,如果也使用env工具那不是和RT-Thread Setting中的管理沖突
    發表于 02-23 07:36

    恒訊科技帶大家深入理解:WebSocket服務器的工作原理

    : 1、握手過程:WebSocket通信的開始是一個握手過程,其目的是確立WebSocket連接。握手通常是通過HTTP協議完成的,客戶端發起一個H
    的頭像 發表于 01-29 16:48 ?448次閱讀

    #2024,立Flag了嘛? #學習spinal HDL還需要學習對應的Scala語言

    學習spinal HDL還需要學習對應的Scala語言,但是spinal HDL直接貼近硬件編程,不知道對于學習spinal HDL什么好的建議?
    發表于 01-21 11:11

    aducm410微處理器還需要接外部晶振和復位電路嗎?

    aducm410微處理器還需要接外部晶振和復位電路嗎?
    發表于 01-11 07:23

    一文詳解WebSocket協議

    在效率和網絡帶寬利用率方面存在諸多問題。WebSocket協議應運而生,對外提供簡單的雙向數據傳輸能力。
    的頭像 發表于 01-07 11:26 ?7191次閱讀
    一文詳解<b class='flag-5'>WebSocket</b><b class='flag-5'>協議</b>

    退出空載條件后,APNOLOAD和VARNOLOAD是否還需要清零?

    空載條件后,APNOLOAD和VARNOLOAD是否還需要清零,還是說只是上電進行一次清零。 謝謝。
    發表于 12-26 07:14

    數模轉換芯片AD7991配置完斷電后,還需要再次配置嗎?

    這個芯片在使用時,一些配置寄存器,用于配置芯片的工作方式。這個寄存器,配置完斷電后,還需要再次配置嗎? 這個芯片兩個型號—0和—1,配置時,地址不一樣。在芯片上沒看有標識,怎么判斷是哪個型號的?
    發表于 12-22 08:06

    既然Kubernetes,為什么還需要Istio?

    Envoy 引入了 xDS 協議,該協議受到各種開源軟件的支持,例如Istio、MOSN等。Envoy 將 xDS 貢獻給服務網格或云原生基礎設施。Envoy 本質上是一個現代版本的代理,可以通過
    的頭像 發表于 12-11 17:28 ?926次閱讀
    既然<b class='flag-5'>有</b><b class='flag-5'>了</b>Kubernetes,為什么<b class='flag-5'>還需要</b>Istio?