日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

慢聊Golang的websocket使用和實現代碼分析

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

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

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

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

圖片圖片N8w28資訊網——每日最新資訊28at.com

gorilla/websocket 框架開源地址為: https://github.com/gorilla/websocketN8w28資訊網——每日最新資訊28at.com

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

圖片圖片N8w28資訊網——每日最新資訊28at.com

簡單使用

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

go get github.com/gorilla/websocket

在正式使用之前我們先簡單了解下兩個數據結構 Upgrader 和 ConnN8w28資訊網——每日最新資訊28at.com

Upgrader

Upgrader指定用于將 HTTP 連接升級到 WebSocket 連接N8w28資訊網——每日最新資訊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:握手完成的持續時間
  • ? ReadBufferSize和WriteBufferSize:以字節為單位指定I/O緩沖區大小。如果緩沖區大小為零,則使用HTTP服務器分配的緩沖區
  • ? CheckOrigin :函數應仔細驗證請求來源 防止跨站點請求偽造

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

Conn

Conn類型表示WebSocket連接,這個結構體的組成包括兩部分,寫入字段(Write fields)和 讀取字段(Read fields)N8w28資訊網——每日最新資訊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 :字段來區分我們是否用Conn作為客戶端還是服務端,也就是說說gorilla/websocket中同時編寫客戶端程序和服務器程序,但是一般是Web應用程序使用單獨的前端作為客戶端程序。N8w28資訊網——每日最新資訊28at.com

部分字段說明如下圖:N8w28資訊網——每日最新資訊28at.com

圖片圖片N8w28資訊網——每日最新資訊28at.com

服務端示例

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

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

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

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

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

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 开江县| 舟山市| 桓台县| 康马县| 西藏| 壶关县| 海宁市| 梅河口市| 米林县| 祥云县| 南投市| 琼结县| 淮滨县| 怀宁县| 林西县| 郸城县| 四会市| 贵州省| 澄江县| 永清县| 济南市| 衡阳县| 江油市| 吉林市| 阿克苏市| 广德县| 九龙城区| 白水县| 河源市| 北碚区| 额尔古纳市| 林州市| 古蔺县| 阿图什市| 台南县| 望都县| 加查县| 庄浪县| 连平县| 额济纳旗| 孝感市|