最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語言使用gorilla/websocket實現(xiàn)websocket

 更新時間:2025年04月30日 09:01:30   作者:考慮考慮  
Gorilla WebSocket 是一個用于 Go 語言的 WebSocket 協(xié)議實現(xiàn),而且是一個優(yōu)秀的組件庫,能快速實現(xiàn)websocket協(xié)議,下面就跟隨小編一起來看看它的具體使用吧

前言

Gorilla WebSocket 是一個用于 Go 語言的 WebSocket 協(xié)議實現(xiàn),而且是一個優(yōu)秀的組件庫,能快速實現(xiàn)websocket協(xié)議

websocket實現(xiàn)

依賴安裝

使用以下依賴安裝對應(yīng)的庫

go get github.com/gorilla/websocket

程序?qū)崿F(xiàn)

package main

import (
    "fmt"
    "github.com/gorilla/websocket"
    "log"
    "net/http"
)

var upgrader = websocket.Upgrader{
    ReadBufferSize:  4196,
    WriteBufferSize: 1124,
    CheckOrigin: func(r *http.Request) bool {

       //if r.Method != "GET" {
       // fmt.Println("method is not GET")
       // return false
       //}
       //if r.URL.Path != "/ws" {
       // fmt.Println("path error")
       // return false
       //}
       return true
    },
}

var m map[string]*websocket.Conn

// ServerHTTP 用于升級協(xié)議
func ServerHTTP(w http.ResponseWriter, r *http.Request) {
    // 收到http請求之后升級協(xié)議
    conn1, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
       log.Println("Error during connection upgrade:", err)
       return
    }
    userId := r.FormValue("userId")
    log.Println("userId:" + userId)
    defer conn1.Close()
    m[userId] = conn1

    conn := m[userId]

    for {
       // 服務(wù)端讀取客戶端請求
       messageType, message, err := conn.ReadMessage()
       if err != nil {
          log.Println("Error during message reading:", err)
          break
       }
       log.Printf("Received:%s", message)

       // 開啟關(guān)閉連接監(jiān)聽
       conn.SetCloseHandler(func(code int, text string) error {
          fmt.Println(code, text) // 斷開連接時將打印code和text
          return nil
       })

       //服務(wù)端給客戶端返回請求
       err = conn.WriteMessage(messageType, message)
       conn.WriteMessage(websocket.TextMessage, []byte("aaa"))
       if err != nil {
          log.Println("Error during message writing:", err)
          return
       }

    }
}

func home(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Index Page")
}

func main() {
    //a, _ := strconv.Atoi("1")
    //fmt.Println(a)

    m = make(map[string]*websocket.Conn)

    // 創(chuàng)建HTTP服務(wù)器
    http.HandleFunc("/ws", ServerHTTP)
    log.Println("Server started on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

啟動之后

使用postman連接服務(wù)端

發(fā)送消息

總結(jié)

Gorilla WebSocket 提供了一個完整且經(jīng)過測試的 WebSocket 協(xié)議實現(xiàn),適用于構(gòu)建高效的 WebSocket 應(yīng)用程序

到此這篇關(guān)于go語言使用gorilla/websocket實現(xiàn)websocket的文章就介紹到這了,更多相關(guān)go websocket內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言的方法接受者類型用值類型還是指針類型?

    Go語言的方法接受者類型用值類型還是指針類型?

    這篇文章主要介紹了Go語言的方法接受者類型用值類型還是指針類型?本文還同時講解了關(guān)于接受者的命名方式,需要的朋友可以參考下
    2014-10-10
  • GoLang完整實現(xiàn)快速列表

    GoLang完整實現(xiàn)快速列表

    這篇文章主要介紹了GoLang完整實現(xiàn)快速列表,列表是一種非連續(xù)的存儲容器,由多個節(jié)點組成,節(jié)點通過一些 變量 記錄彼此之間的關(guān)系,列表有多種實現(xiàn)方法,如單鏈表、雙鏈表等
    2022-12-12
  • GoLang中生成UUID唯一標(biāo)識的實現(xiàn)方法

    GoLang中生成UUID唯一標(biāo)識的實現(xiàn)方法

    UUID是讓分散式系統(tǒng)中的所有元素,都能有唯一的辨識信息,本文主要介紹了GoLang中生成UUID唯一標(biāo)識的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Go語言使用Timeout Context取消任務(wù)的實現(xiàn)

    Go語言使用Timeout Context取消任務(wù)的實現(xiàn)

    本文主要介紹了Go語言使用Timeout Context取消任務(wù)的實現(xiàn),包括基本的任務(wù)取消和控制HTTP客戶端請求的超時,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • go語言編程之select信道處理示例詳解

    go語言編程之select信道處理示例詳解

    這篇文章主要為大家介紹了go語言編程之select信道處理示例詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • golang 比較浮點數(shù)的大小方式

    golang 比較浮點數(shù)的大小方式

    這篇文章主要介紹了golang 比較浮點數(shù)的大小方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go每日一庫之zap日志庫的安裝使用指南

    Go每日一庫之zap日志庫的安裝使用指南

    這篇文章主要為大家介紹了Go每日一庫之zap安裝使用示例學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Go語言中的多種測試方法

    Go語言中的多種測試方法

    本文主要介紹了Go語言中的多種測試方法,包括單元測試、表格驅(qū)動測試、基準(zhǔn)測試等,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • Go語言并發(fā)技術(shù)詳解

    Go語言并發(fā)技術(shù)詳解

    這篇文章主要介紹了Go語言并發(fā)技術(shù)詳解,本文講解了goroutine、channels、Buffered Channels、Range和Close等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • 使用IDEA配置GO語言的開發(fā)環(huán)境備忘錄

    使用IDEA配置GO語言的開發(fā)環(huán)境備忘錄

    最近在配置idea開發(fā)go語言時碰到很多問題,想著很多人都可能會遇到,所以下面這篇文章主要給大家介紹了關(guān)于使用IDEA配置GO語言的開發(fā)環(huán)境,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-05-05

最新評論

高阳县| 镇赉县| 广河县| 醴陵市| 天柱县| 隆尧县| 广安市| 临洮县| 景宁| 泗水县| 永泰县| 马山县| 大石桥市| 胶南市| 孟连| 水富县| 花垣县| 故城县| 遂溪县| 定兴县| 肥东县| 阿克| 晋中市| 房山区| 巴东县| 高雄县| 宝山区| 华蓥市| 淮滨县| 威海市| 莱阳市| 北京市| 鞍山市| 南皮县| 平利县| 延川县| 澳门| 栖霞市| 息烽县| 郯城县| 西吉县|