AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

慢聊Golang的websocket使用和實現(xiàn)代碼分析

來源: 責編: 時間:2023-12-04 09:21:08 306觀看
導讀本期將會繼續(xù)上次話題,上篇主要是理論還是停留在文字層面,今天帶來的是websocket實操,分享它使用和底層實現(xiàn)!相信很多使用Golang的小伙伴都知道Gorilla這個工具包,長久以來gorilla/websocket 都是比官方包更好的websocket

本期將會繼續(xù)上次話題,上篇主要是理論還是停留在文字層面,今天帶來的是websocket實操,分享它使用和底層實現(xiàn)!NFk28資訊網(wǎng)——每日最新資訊28at.com

相信很多使用Golang的小伙伴都知道Gorilla這個工具包,長久以來gorilla/websocket 都是比官方包更好的websocket包。NFk28資訊網(wǎng)——每日最新資訊28at.com

題外話 gorilla:大猩猩(不過這個猩猩還挺可愛的)NFk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片NFk28資訊網(wǎng)——每日最新資訊28at.com

gorilla/websocket 框架開源地址為: https://github.com/gorilla/websocketNFk28資訊網(wǎng)——每日最新資訊28at.com

今天小許就用【gorilla/websocket】框架來展開本期文章內容,文章會涉及到核心代碼的走讀,會涉及到不少代碼,需要小伙伴們保持耐心往下看,然后結合之前分享的websocket基礎,徹底學個明白!NFk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片NFk28資訊網(wǎng)——每日最新資訊28at.com

簡單使用

安裝Gorilla Websocket Go軟件包,您只需要使用即可go getNFk28資訊網(wǎng)——每日最新資訊28at.com

go get github.com/gorilla/websocket

在正式使用之前我們先簡單了解下兩個數(shù)據(jù)結構 Upgrader 和 ConnNFk28資訊網(wǎng)——每日最新資訊28at.com

Upgrader

Upgrader指定用于將 HTTP 連接升級到 WebSocket 連接NFk28資訊網(wǎng)——每日最新資訊28at.com

type Upgrader struct {        HandshakeTimeout time.Duration        ReadBufferSize, WriteBufferSize int    WriteBufferPool BufferPool    Subprotocols []string    Error func(w http.ResponseWriter, r *http.Request, status int, reason error)    CheckOrigin func(r *http.Request) bool    EnableCompression bool}
  • ? HandshakeTimeout:握手完成的持續(xù)時間
  • ? ReadBufferSize和WriteBufferSize:以字節(jié)為單位指定I/O緩沖區(qū)大小。如果緩沖區(qū)大小為零,則使用HTTP服務器分配的緩沖區(qū)
  • ? CheckOrigin :函數(shù)應仔細驗證請求來源 防止跨站點請求偽造

這里一般會設置下CheckOrigin來解決跨域問題NFk28資訊網(wǎng)——每日最新資訊28at.com

Conn

Conn類型表示W(wǎng)ebSocket連接,這個結構體的組成包括兩部分,寫入字段(Write fields)和 讀取字段(Read fields)NFk28資訊網(wǎng)——每日最新資訊28at.com

type Conn struct {    conn        net.Conn    isServer    bool    ...    // Write fields    writeBuf      []byte            writePool     BufferPool    writeBufSize  int    writer        io.WriteCloser     isWriting     bool               ...    // Read fields    readRemaining int64    readFinal     bool      readLength    int64     messageReader *messageReader     ...}

isServer :字段來區(qū)分我們是否用Conn作為客戶端還是服務端,也就是說說gorilla/websocket中同時編寫客戶端程序和服務器程序,但是一般是Web應用程序使用單獨的前端作為客戶端程序。NFk28資訊網(wǎng)——每日最新資訊28at.com

部分字段說明如下圖:NFk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片NFk28資訊網(wǎng)——每日最新資訊28at.com

服務端示例

出于說明的目的,我們將在Go中同時編寫客戶端程序和服務端程序(其實小許是前端小趴菜

本文鏈接:http://www.tebozhan.com/showinfo-26-37263-0.html慢聊Golang的websocket使用和實現(xiàn)代碼分析

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python Django:transactions的概念、用法及常見用例

下一篇: 玩轉Spring MVC自定義請求匹配規(guī)則

標簽:
  • 熱門焦點
Top