日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編新一為您帶來了關于Golang Fiber的WebSocket客戶端的轉變問題的解答。在使用Golang Fiber進行開發時,有時我們需要將HTTP客戶端或連接轉換為WebSocket客戶端。這樣可以在同一個連接上實現HTTP和WebSocket的雙向通信。接下來,我們將詳細介紹如何實現這一轉變過程。通過以下步驟,您將能夠輕松地在Golang Fiber中使用WebSocket客戶端進行開發。

問題內容

有關背景信息,請參閱最近的這篇 stackoverflow 文章。

我正在使用 Golang Fiber 設置 WebSockets 服務,如下所示:

app.Use("/ws", handler.UpgradeHandler)
    app.Get("/ws/:id", websocket.New(func(ws *websocket.Conn) {
        handler.MediaStreamHandler(ws)
    }))

登錄后復制

使用 UpgradeHandler 中間件,如下所示:

func UpgradeHandler(c *fiber.Ctx) error {
    // IsWebSocketUpgrade returns true if the client
    // requested upgrade to the WebSocket protocol.
    if websocket.IsWebSocketUpgrade(c) {
        log.Info("request to open WebSockets channel")
        return c.Next()
    }
    return fiber.ErrUpgradeRequired
}

登錄后復制

期望該服務的 HTTP 客戶端向 http://chat.acme.ai:80/ws/123 等發出 HTTP GET 請求,并強制 Fiber 服務器打開 WebSockets 服務。例如:

func MediaStreamHandler(c *websocket.Conn) {
    ...
    for {
        if mt, buf, err = c.ReadMessage(); err != nil {
          ...
        }
        ...
    }

登錄后復制

我們在其中攝取流媒體,直到 WebSocket 關閉。

問題:如果客戶端向 Fiber 服務發起 HTTP GET 請求以啟動 Fiber 端的 WebSockets 服務,那么客戶端邏輯如何將其 HTTP 客戶端轉變為 WebSockets 客戶端?

直觀上,我們只是在某個地方有一個套接字,將 HTTP 客戶端升級到 WebSockets 客戶端只是將正確的“粘合劑”添加到 HTTP 客戶端。但從使用 Java WebSockets 等固定解決方案的角度來看,完全不清楚如何將 HTTP 客戶端轉變為 WebSockets 客戶端。

解決方法

Golang/Fiber 在這里是偶然的。根據定義,WebSockets 協議向某個服務端點發起 HTTP GET 請求;在握手期間,傳輸協議從 HTTP 升級為 WebSockets。該升級的一部分是請求和響應中的 HTTP 標頭都被修改。請參閱下面的聊天相關示例。

升級后的請求標頭:

GET /chat HTTP/1.1
  Host: server.example.com
  Upgrade: websocket
  Connection: Upgrade
  Sec-WebSocket-Key: x3JJHmbDL1EzLkh9GBhXDw==
  Sec-WebSocket-Protocol: chat, superchat
  Sec-WebSocket-Version: 13
  Origin: http://example.com

登錄后復制

服務器響應:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sM1YUkAGmm50PpG2HaGWk=
Sec-WebSocket-Protocol: chat

登錄后復制

這些示例來自這篇有關 WebSockets 的文章 .

分享到:
標簽:overflow
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定