Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan Websockets dalam Go untuk komunikasi masa nyata?

Bagaimana untuk menggunakan Websockets dalam Go untuk komunikasi masa nyata?

WBOY
WBOYasal
2023-05-11 16:07:411937semak imbas

Websockets ialah teknologi yang mewujudkan komunikasi dua hala antara penyemak imbas web dan pelayan, membolehkan aplikasi web menolak data kepada klien dalam masa nyata. Sebagai contoh, Websockets boleh digunakan untuk melaksanakan bilik sembang dalam talian, memaparkan kandungan sembang masa nyata secara langsung dalam aplikasi Web tanpa memuat semula halaman.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan Websockets dalam bahasa Go untuk komunikasi masa nyata. Kami akan menggunakan perpustakaan Gorilla Websockets untuk mencapai matlamat ini. Perpustakaan ini menyediakan beberapa fungsi utiliti yang mudah dan kod sampel.

1. Pasang Gorilla Websockets

Sebelum kita mula, kita perlu memasang Gorilla Websockets. Anda boleh memasangnya melalui arahan berikut:

go get github.com/gorilla/websocket

2 Wujudkan sambungan Websockets

Seterusnya, kita boleh mula menulis kod untuk mewujudkan sambungan Websockets. Kita perlu menentukan fungsi pengendali HTTP untuk mengendalikan sambungan Websockets. Berikut ialah kod contoh ringkas:

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
}

func handleWebsocket(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return
    }
    defer conn.Close()

    for {
        messageType, p, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            return
        }
        log.Printf("received: %s", p)

        err = conn.WriteMessage(messageType, p)
        if err != nil {
            log.Println(err)
            return
        }
    }
}

func main() {
    http.HandleFunc("/ws", handleWebsocket)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Dalam kod sampel ini, kami mentakrifkan fungsi handleWebsocket untuk mengendalikan sambungan Websockets. Fungsi ini menggunakan Peningkatan untuk menaik taraf pengendali HTTP kepada pengendali Websockets. Penaik taraf ialah struktur yang mentakrifkan beberapa parameter, seperti ReadBufferSize dan WriteBufferSize, yang digunakan untuk menetapkan saiz sambungan baca dan tulis penimbal.

Dalam fungsi yang kita baca mesej daripada sambungan, cetak mesej dalam terminal dan hantar semula kepada pelanggan. Jika ralat berlaku semasa membaca atau menulis, sambungan terputus. Dalam fungsi utama, kami mendaftarkan fungsi handleWebsocket ke dalam pemproses HTTP dan memulakan pelayan HTTP.

3. Gunakan Websockets untuk komunikasi masa nyata

Kini, kami telah menulis pemproses Websockets mudah yang boleh kami gunakan untuk komunikasi masa nyata. Seterusnya, mari kita tulis aplikasi web mudah supaya kita boleh menguji sambungan Websockets kita.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Websockets Example</title>
  </head>
  <body>
    <input id="message-input" type="text" placeholder="Type a message...">
    <button id="send-button">Send</button>
    <ul id="message-list"></ul>
    <script>
      const socket = new WebSocket('ws://localhost:8080/ws');
      socket.addEventListener('message', event => {
        const li = document.createElement('li');
        li.textContent = event.data;
        document.querySelector('#message-list').appendChild(li);
      });
      document.querySelector('#send-button').addEventListener('click', () => {
        const input = document.querySelector('#message-input');
        const value = input.value.trim();
        if (value) {
          socket.send(value);
          input.value = '';
        }
      });
    </script>
  </body>
</html>

Dalam contoh aplikasi web ini, kami mencipta halaman yang mengandungi kotak input teks, butang hantar dan senarai mesej. Apabila pengguna memasukkan mesej dalam kotak teks dan mengklik butang hantar, kami menggunakan sambungan Websockets untuk menghantarnya ke pelayan. Pelayan kemudian menghantar semula mesej dan memaparkannya dalam senarai. Setiap kali kami menerima mesej baharu, kami mencipta item senarai baharu dan menambahkannya pada senarai.

4. Kesimpulan

Dalam artikel ini, kami telah memperkenalkan cara menggunakan Websockets dalam Go untuk komunikasi masa nyata. Kami menggunakan perpustakaan Gorilla Websockets untuk mewujudkan sambungan Websockets dan menulis aplikasi web mudah untuk menguji sambungan kami. Soket web ialah teknologi berkuasa yang boleh digunakan untuk melaksanakan banyak aplikasi masa nyata, seperti bilik sembang dalam talian, pemantauan data masa nyata dan papan pemuka, dsb. Semoga artikel ini bermanfaat kepada anda.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Websockets dalam Go untuk komunikasi masa nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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