Socket / WebSocket

Socket

位於OSI 模型的會談層(第 5 層),為了方便使用 TCP 與 UDP 而存在的抽象層。

是一組 API,在設計模式中算是一種 Facade Pattern,

將複雜的 TCP、UDP 隱藏在內部,透過 Socket 層去組織訊息,以符合指定的協議。

WebSocket

是完整的應用層協議,提供全雙工通訊(即為雙向),以 TCP 為底層傳輸。

  • 設計通過 80 和 443 埠工作,以支援 HTTP 代理與中介。

協議規範將 ws (WebSocket)wss (WebSocket secure),分為明文、密文連接的協定類型,定義為兩個新的統一資源識別符(URI)。

透過 HTTP 協議進行握手只需透過一次 TCP 連接,就能一直保持連線

各式語言

  • Node.js - Socket.io

  • Python - ws4py

  • Apache 支持 - Module mod_proxy_wstunnel

  • Nginx 支持

    • Nginx as a WebSockets Proxy

    • WebSocket Proxying

    • Nginx Announces Support for WebSocket Protocol

參考資料

https://www.cnblogs.com/jiangzhaowei/p/8781635.html https://zh.wikipedia.org/wiki/WebSocket https://medium.com/enjoy-life-enjoy-coding/javascript-websocket-%E8%AE%93%E5%89%8D%E5%BE%8C%E7%AB%AF%E6%B2%92%E6%9C%89%E8%B7%9D%E9%9B%A2-34536c333e1b

Last updated

Was this helpful?