WebSocket 是 2011 年爲 http1.1 新增的功能,它爲 http 服務器和客戶端提供了雙向流的數據交互模式,這也是代理軟件找到的第一個可以通過 CDN
的代理協議。它也是最早的將代理流量隱藏在正常 http 流量中的方案之一,基本上所有客戶端都支持它。
目前只有在你的客戶端不支持其它協議時才建議使用這個協議因爲它與其它協議比起來幾乎已經沒有任何優勢,還有如下缺點:
- 大部分網站沒有 websocket,所以 ws 的流量本身就不多,如果你使用它作爲代理則大量的 websocekt 流量可能本身就是一個明顯的代理特徵
- cloudflare 對 websocket 有流量併發限制,通常如果只是自己使用沒有問題,但如果你的服務器有很多人同時使用 websocket,則可能會觸發 cloudflare 的限流導致訪問緩慢
- websocket 使用 http1.1 本身沒有連接復用,頻繁創建連接和 tls 握手很容易拖慢速度
- websocket 不是流協議而是幀協議,數據傳輸時需要封裝爲 websocekt 幀這也減慢了此協議的效率