websocket是一個優秀的協定,它是建立在tcp基礎之上的,相容http的網絡協定。通過websocket我們可以實作用戶端和伺服器端的即時通訊,免除了用戶端多次輪循帶來的性能損耗。
既然websocket這麼優秀,那麼怎麼在netty中使用websocket呢?
netty中的websocket
雖然websocket是一個單獨的和http協定完全不同的協定,但是在netty中還是将其放到了http包中。我們回想一下netty中對于各種協定的支援。如果要支援這種協定,肯定需要一個decoder和encoder編碼和解碼器用于對協定進行編解碼。将傳輸的資料從bytebuf轉換到協定類型,或者将協定類型轉換成為bytebuf。
這是netty的工作核心原理,也是後續自定義netty擴充的基礎。
那麼對于websocket來說,是怎麼樣的呢?
websocket的版本
websocket作為一種協定,自然不是憑空而來的,通過不斷的發展才到了今天的websocket協定。具體的websocket的發展史我們就不去深究了。我們先看下netty提供的各種websocket的版本。
在websocketversion類中,我們可以看到:
unknown(asciistring.cached(stringutil.empty_string)),
v00(asciistring.cached("0")),
v07(asciistring.cached("7")),
v08(asciistring.cached("8")),
v13(asciistring.cached("13"));