pembangunan bahagian belakang
Golang
Bagaimanakah Go WebSocket melaksanakan komunikasi dua hala?
Bagaimanakah Go WebSocket melaksanakan komunikasi dua hala?
Bahasa Go mempunyai sokongan terbina dalam untuk WebSocket, yang boleh mencapai komunikasi dua hala melalui langkah berikut: Cipta pelayan WebSocket: Cipta fungsi pengendali HTTP. Buat struktur Penaik taraf untuk menaik taraf permintaan HTTP. Mulakan pelayan WebSocket. Buat klien WebSocket: Buat permintaan HTTP dan tetapkan pengepala WebSocket. Buat struktur Dialer. Gunakan kaedah Dail untuk mewujudkan sambungan.

Go WebSocket: Mendayakan komunikasi dua hala
WebSocket ialah protokol komunikasi dua hala yang membenarkan pertukaran data masa nyata antara pelanggan dan pelayan melalui satu sambungan TCP berterusan. Bahasa Go menyediakan pembangun dengan sokongan terbina dalam untuk WebSocket, menjadikan komunikasi dua hala mudah dan mudah.
Mencipta pelayan WebSocket
Mencipta pelayan WebSocket memerlukan tiga langkah:
- Gunakan pakej
net/httpuntuk mencipta fungsihttp.Handler, yang mana mengendalikan sambungan WebSocket.net/http包创建http.Handler函数,该函数处理 WebSocket 连接。 - 创建
websocket.Upgrader结构体,该结构体将 HTTP 请求升级为 WebSocket 连接。 - 使用
http.ServeHTTP方法启动 WebSocket 服务端。
package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
func main() {
// HTTP 处理程序
handler := func(w http.ResponseWriter, r *http.Request) {
upgrader := websocket.Upgrader{}
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
for {
messageType, message, err := conn.ReadMessage()
if err != nil {
log.Fatal(err)
}
if messageType == websocket.CloseMessage {
log.Println("Client closed connection")
return
}
log.Printf("Received from client: %s", string(message))
err = conn.WriteMessage(messageType, []byte("Echoed: "+string(message)))
if err != nil {
log.Fatal(err)
}
}
}
// 启动 WebSocket 服务端
http.HandleFunc("/websocket", handler)
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal(err)
}
}创建 WebSocket 客户端
创建 WebSocket 客户端同样需要三步:
- 使用
net/http包创建http.Request,并设置"Upgrade: WebSocket"头。 - 创建
websocket.Dialer结构体,该结构体用于建立 WebSocket 连接。 - 使用
DialBuat struktur
websocket.Upgrader, yang meningkatkan permintaan HTTP kepada sambungan WebSocket. Gunakan kaedah http.ServeHTTP untuk memulakan pelayan WebSocket.
package main
import (
"fmt"
"log"
"github.com/gorilla/websocket"
)
func main() {
dialers := websocket.Dialer{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
conn, _, err := dialers.Dial("ws://localhost:8080/websocket", nil)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
for i := 0; i < 10; i++ {
message := fmt.Sprintf("Hello from client %d", i)
err := conn.WriteMessage(websocket.TextMessage, []byte(message))
if err != nil {
log.Fatal(err)
}
_, message, err = conn.ReadMessage()
if err != nil {
log.Fatal(err)
}
log.Printf("Received echo: %s", string(message))
}
}🎜🎜Mencipta klien WebSocket🎜🎜🎜Mencipta klien WebSocket juga memerlukan tiga langkah: 🎜🎜🎜Gunakan pakej net/http untuk mencipta http.Request dan tetapkan pengepala "Upgrade: WebSocket". 🎜🎜Buat struktur websocket.Dialer, yang digunakan untuk mewujudkan sambungan WebSocket. 🎜🎜Gunakan kaedah Dail untuk mewujudkan sambungan. 🎜🎜rrreee🎜Dengan langkah ini, anda boleh melaksanakan komunikasi dua hala WebSocket dengan mudah dalam Go, menambahkan keupayaan interaksi masa nyata pada aplikasi anda. 🎜Atas ialah kandungan terperinci Bagaimanakah Go WebSocket melaksanakan komunikasi dua hala?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Clothoff.io
Penyingkiran pakaian AI
Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!
Artikel Panas
Alat panas
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Cara Memasang Pergi
Jul 09, 2025 am 02:37 AM
Kunci untuk memasang Go ialah memilih versi yang betul, mengkonfigurasi pembolehubah persekitaran, dan mengesahkan pemasangan. 1. Pergi ke laman web rasmi untuk memuat turun pakej pemasangan sistem yang sepadan. Windows menggunakan fail .msi, macOS menggunakan fail .pkg, menggunakan fail linux .tar.gz dan unzip mereka ke direktori /usr /tempatan; 2. Konfigurasi pembolehubah persekitaran, edit ~/.bashrc atau ~/. 3. Gunakan arahan kerajaan untuk mengesahkan pemasangan, dan jalankan program ujian hello.go untuk mengesahkan bahawa penyusunan dan pelaksanaan adalah normal. Tetapan jalan dan gelung sepanjang proses
Contoh Sync.WaitGroup
Jul 09, 2025 am 01:48 AM
Sync.WaitGroup digunakan untuk menunggu sekumpulan goroutin untuk menyelesaikan tugas. Intinya adalah untuk bekerjasama melalui tiga kaedah: tambah, selesai, dan tunggu. 1.add (n) Tetapkan bilangan goroutine untuk menunggu; 2.Done () dipanggil pada akhir setiap goroutine, dan kiraan dikurangkan oleh satu; 3.Wait () menghalang coroutine utama sehingga semua tugas selesai. Apabila menggunakannya, sila ambil perhatian: Tambah hendaklah dipanggil di luar goroutine, elakkan tunggu pendua, dan pastikan untuk memastikan bahawa Don dipanggil. Adalah disyorkan untuk menggunakannya dengan menangguhkan. Ia adalah perkara biasa dalam merangkak bersama laman web, pemprosesan data batch dan senario lain, dan dapat mengawal proses konkurensi dengan berkesan.
Pergi Tutorial Pakej Embed
Jul 09, 2025 am 02:46 AM
Menggunakan pakej embed Go dengan mudah boleh membenamkan sumber statik ke dalam binari, sesuai untuk perkhidmatan web untuk membungkus HTML, CSS, gambar dan fail lain. 1. Mengisytiharkan sumber tertanam untuk menambah // Go: enmbed Comment sebelum pemboleh ubah, seperti membenamkan satu fail hello.txt; 2. Ia boleh tertanam dalam keseluruhan direktori seperti statik/*, dan menyedari pembungkusan pelbagai fail melalui embed.fs; 3. Adalah disyorkan untuk menukar mod pemuatan cakera melalui pembolehubah bangunan atau persekitaran untuk meningkatkan kecekapan; 4. Perhatikan ketepatan laluan, batasan saiz fail dan ciri-ciri bacaan sumber terbenam. Penggunaan rasional embed dapat memudahkan penggunaan dan mengoptimumkan struktur projek.
Pergi antara muka {} vs ada
Jul 11, 2025 am 02:38 AM
Dalam bahasa Go, antara muka {} dan mana -mana jenis yang sama. Sejak GO1.18, mana -mana telah diperkenalkan sebagai alias untuk antara muka {}. Tujuan utama adalah untuk meningkatkan kebolehbacaan dan kejelasan semantik kod; 1. 2. Interface {} lebih sesuai untuk menentukan tingkah laku antara muka, menekankan jenis antara muka, atau serasi dengan kod lama; 3. Prestasi kedua adalah sama dengan mekanisme asas, dan pengkompil akan menggantikan apa -apa dengan antara muka {}, yang tidak akan menyebabkan overhead tambahan; 4. Perhatikan untuk menaip isu keselamatan semasa menggunakannya, dan mungkin perlu bekerjasama dengan penegasan jenis atau
Pergi pilih dengan kes lalai
Jul 14, 2025 am 02:54 AM
Tujuan Select Plus Default adalah untuk membolehkan Pilih untuk melakukan tingkah laku lalai apabila tiada cawangan lain yang bersedia untuk mengelakkan penyekatan program. 1. Apabila menerima data dari saluran tanpa menyekat, jika saluran kosong, ia akan terus memasuki cawangan lalai; 2. Dalam kombinasi dengan masa. Selepas atau ticker, cuba hantar data dengan kerap. Jika saluran penuh, ia tidak akan menyekat dan melangkau; 3. Mencegah kebuntuan, elakkan program terperangkap apabila tidak pasti sama ada saluran ditutup; Apabila menggunakannya, sila ambil perhatian bahawa cawangan lalai akan dilaksanakan dengan serta -merta dan tidak boleh disalahgunakan, dan lalai dan kes saling eksklusif dan tidak akan dilaksanakan pada masa yang sama.
Contoh API GO REST
Jul 14, 2025 am 03:01 AM
Bagaimana dengan cepat melaksanakan contoh Restapi yang ditulis dalam GO? Jawapannya adalah menggunakan perpustakaan standard Net/HTTP, yang boleh diselesaikan mengikut tiga langkah berikut: 1. Sediakan struktur projek dan memulakan modul; 2. Tentukan struktur data dan fungsi pemprosesan, termasuk mendapatkan semua data, mendapatkan data tunggal berdasarkan ID, dan membuat data baru; 3. Daftar laluan dalam fungsi utama dan mulakan pelayan. Seluruh proses tidak memerlukan perpustakaan pihak ketiga. Fungsi Restapi Asas dapat direalisasikan melalui perpustakaan standard dan boleh diuji melalui penyemak imbas atau pos.
Cara membina pelayan web di mana sahaja
Jul 15, 2025 am 03:05 AM
Ia tidak sukar untuk membina pelayan web yang ditulis dalam Go. Inti terletak pada menggunakan pakej NET/HTTP untuk melaksanakan perkhidmatan asas. 1. Gunakan NET/HTTP untuk memulakan pelayan yang paling mudah: fungsi pemprosesan mendaftar dan mendengar port melalui beberapa baris kod; 2. 3. Amalan Umum: Routing Kumpulan oleh Modul Fungsional, dan gunakan perpustakaan pihak ketiga untuk menyokong padanan kompleks; 4. Perkhidmatan Fail Statik: Sediakan fail HTML, CSS dan JS melalui http.fileserver; 5. Prestasi dan Keselamatan: Aktifkan HTTPS, hadkan saiz badan permintaan, dan tetapkan masa tamat untuk meningkatkan keselamatan dan prestasi. Selepas menguasai perkara -perkara utama ini, lebih mudah untuk mengembangkan fungsi.
Cara Membuat Permintaan HTTP Di Perjalanan
Jul 14, 2025 am 02:48 AM
Kaedah memulakan permintaan HTTP di GO adalah seperti berikut: 1. Gunakan http.get () untuk memulakan permintaan GET yang paling mudah, ingat untuk mengendalikan kesilapan dan menutup badan; 2. Gunakan http.post () atau http.newRequest () untuk menghantar permintaan pos, dan anda boleh menetapkan data JSON atau membentuk data; 3. Tetapkan masa tamat, header dan cookies, tamat masa kawalan dan header.Set untuk menambah tajuk tersuai melalui pelanggan, dan gunakan Cookiejar untuk mengurus kuki secara automatik; 4. Nota termasuk perlu menutup badan, objek bukan semula, dan menetapkan pengguna-AG


