Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Untuk klien WebSocket Golang Fiber, bagaimana untuk menukar klien/sambungan HTTP kepada WebSocket?

Untuk klien WebSocket Golang Fiber, bagaimana untuk menukar klien/sambungan HTTP kepada WebSocket?

Feb 14, 2024 pm 09:06 PM
overflow

对于 Golang Fiber 的 WebSocket 客户端,如何将 HTTP 客户端/连接转变为 WebSocket?

editor php Xinyi membawakan anda jawapan kepada soalan tentang transformasi pelanggan WebSocket Golang Fiber. Apabila membangun dengan Golang Fiber, kadangkala kita perlu menukar klien HTTP atau sambungan kepada klien WebSocket. Ini membolehkan komunikasi dua hala antara HTTP dan WebSocket pada sambungan yang sama. Seterusnya, kami akan memperincikan bagaimana untuk mencapai proses transformasi ini. Dengan langkah-langkah berikut, anda akan dapat membangunkan dengan mudah menggunakan klien WebSocket dalam Golang Fiber.

Kandungan soalan

Untuk maklumat latar belakang, lihat artikel stackoverflow terbaru ini.

Saya sedang menyediakan perkhidmatan WebSockets menggunakan Golang Fiber seperti yang ditunjukkan di bawah:

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

Gunakan UpgradeHandler middleware seperti ini:

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
}
Salin selepas log masuk

Menjangkakan klien HTTP perkhidmatan membuat permintaan HTTP GET kepada http://chat.acme.ai:80/ws/123dsb dan memaksa pelayan Fiber membuka perkhidmatan WebSockets. Contohnya:

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

Kami menelan media penstriman di dalamnya sehingga WebSocket ditutup.

Soalan: Jika pelanggan membuat permintaan HTTP GET kepada perkhidmatan Fiber untuk memulakan perkhidmatan WebSockets di sebelah Fiber, bagaimanakah logik pelanggan menukar klien HTTPnya menjadi klien WebSockets?

Secara intuitif, kami hanya mempunyai soket di suatu tempat, dan menaik taraf klien HTTP kepada klien WebSockets hanyalah soal menambah "gam" yang betul pada klien HTTP. Tetapi dari perspektif menggunakan penyelesaian tetap seperti Java WebSockets, tidak jelas sama sekali cara menukar klien HTTP menjadi klien WebSockets.

Penyelesaian

Golang/Fiber secara tidak sengaja di sini. Mengikut definisi, protokol WebSockets memulakan permintaan HTTP GET ke titik akhir perkhidmatan semasa jabat tangan, protokol pengangkutan dinaik taraf daripada HTTP kepada WebSockets. Sebahagian daripada peningkatan ini ialah pengepala HTTP dalam kedua-dua permintaan dan respons diubah suai. Lihat contoh berkaitan sembang di bawah.

Tajuk permintaan ditingkatkan:

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
Salin selepas log masuk

Maklum balas pelayan:

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

Contoh ini adalah daripada artikel ini tentang WebSockets .

Atas ialah kandungan terperinci Untuk klien WebSocket Golang Fiber, bagaimana untuk menukar klien/sambungan HTTP kepada WebSocket?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah pengeluaran halaman H5 adalah pembangunan front-end? Adakah pengeluaran halaman H5 adalah pembangunan front-end? Apr 05, 2025 pm 11:42 PM

Ya, pengeluaran halaman H5 adalah kaedah pelaksanaan penting untuk pembangunan front-end, yang melibatkan teknologi teras seperti HTML, CSS dan JavaScript. Pemaju membina halaman H5 yang dinamik dan berkuasa dengan bijak menggabungkan teknologi ini, seperti menggunakan & lt; kanvas & gt; Tag untuk menarik grafik atau menggunakan JavaScript untuk mengawal tingkah laku interaksi.

Bagaimana untuk menyesuaikan simbol saiz semula melalui CSS dan menjadikannya seragam dengan warna latar belakang? Bagaimana untuk menyesuaikan simbol saiz semula melalui CSS dan menjadikannya seragam dengan warna latar belakang? Apr 05, 2025 pm 02:30 PM

Kaedah penyesuaian simbol saiz semula dalam CSS bersatu dengan warna latar belakang. Dalam perkembangan harian, kita sering menghadapi situasi di mana kita perlu menyesuaikan butiran antara muka pengguna, seperti menyesuaikan ...

Kenapa unsur-unsur blok sebaris tidak disengajakan? Bagaimana menyelesaikan masalah ini? Kenapa unsur-unsur blok sebaris tidak disengajakan? Bagaimana menyelesaikan masalah ini? Apr 04, 2025 pm 10:39 PM

Mengenai sebab-sebab dan penyelesaian untuk memaparkan unsur-unsur blok sebaris. Apabila menulis susun atur laman web, kami sering menghadapi masalah paparan yang kelihatan aneh. Bandingkan ...

Harga terbaru Bitcoin pada 2018-2024 USD Harga terbaru Bitcoin pada 2018-2024 USD Feb 15, 2025 pm 07:12 PM

Harga USD Bitcoin masa nyata Faktor yang menjejaskan harga bitcoin Petunjuk untuk meramalkan harga bitcoin masa depan Berikut adalah beberapa maklumat penting mengenai harga Bitcoin pada 2018-2024:

Bagaimana untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas melalui JavaScript atau CSS? Bagaimana untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas melalui JavaScript atau CSS? Apr 05, 2025 pm 10:39 PM

Cara menggunakan JavaScript atau CSS untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas. Dalam tetapan percetakan penyemak imbas, ada pilihan untuk mengawal sama ada paparan ...

Bagaimana cara menggunakan atribut clip-path CSS untuk mencapai kesan lengkung 45 darjah segmen? Bagaimana cara menggunakan atribut clip-path CSS untuk mencapai kesan lengkung 45 darjah segmen? Apr 04, 2025 pm 11:45 PM

Bagaimana untuk mencapai kesan lengkung 45 darjah segmen? Dalam proses melaksanakan segmen, bagaimana membuat sempadan yang betul berubah menjadi lengkung 45 darjah ketika mengklik butang kiri, dan titik ...

Bagaimana untuk mencapai kesan segmentasi dengan sempadan lengkung 45 darjah? Bagaimana untuk mencapai kesan segmentasi dengan sempadan lengkung 45 darjah? Apr 04, 2025 pm 11:48 PM

Petua untuk melaksanakan kesan segmen dalam reka bentuk antara muka pengguna, Segmenter adalah elemen navigasi biasa, terutamanya dalam aplikasi mudah alih dan laman web responsif. …

Teks di bawah susun atur flex ditinggalkan tetapi bekas dibuka? Bagaimana menyelesaikannya? Teks di bawah susun atur flex ditinggalkan tetapi bekas dibuka? Bagaimana menyelesaikannya? Apr 05, 2025 pm 11:00 PM

Masalah pembukaan kontena kerana peninggalan teks yang berlebihan di bawah susun atur flex dan penyelesaian digunakan ...

See all articles