


Panduan Pembangunan Soket Web golang: Melaksanakan fungsi pengurusan jadual dalam talian berbilang orang
Panduan Pembangunan Soket Web Golang: Melaksanakan Fungsi Pengurusan Jadual Dalam Talian Berbilang Orang
Pengenalan:
Dengan kadar pantas dan keperluan pelbagai tugas dalam kehidupan moden, kita sering perlu membuat pelarasan dan penyelarasan dalam jadual. Fungsi pengurusan jadual dalam talian berbilang orang boleh membantu berbilang orang bekerjasama dan berkongsi jadual dalam masa nyata, meningkatkan kecekapan kerja. Artikel ini akan memperkenalkan cara menggunakan teknologi Golang dan Websocket untuk melaksanakan fungsi pengurusan jadual dalam talian berbilang orang dan melampirkan contoh kod khusus. . Mulakan modul Go baharu menggunakan arahan berikut:
go mod init schedule
- Kemudian, kita perlu memperkenalkan kebergantungan yang diperlukan dalam projek:
go get -u github.com/gin-gonic/gin go get -u github.com/gorilla/websocket
Salin selepas log masuk- Buat pelayan Websocket: Seterusnya, kami akan mencipta pelayan Websocket untuk Pelaksanaan pelbagai -fungsi pengurusan jadual dalam talian orang. Dalam direktori akar projek, buat fail bernama
- Dalam kod di atas, kami menggunakan rangka kerja Gin untuk mencipta HTTP mudah pelayan, dan mendaftarkan laluan Websocket pada laluan
/ws
. Dalam fungsi pemprosesan penghalaan, kami menaik taraf sambungan HTTP Naik Taraf kepada sambungan Websocket dan mendapatkan sambungan yang diwujudkan dengan klien.
Memproses sambungan dan mesej:Dalam pelayan Websocket kami, kami perlu melaksanakan pemprosesan sambungan dan fungsi penyiaran mesej. Tambahkan kod berikut dalam fungsi pemprosesan laluan:
main.go
dan tambahkan kod berikut dalam fail: package main import ( "log" "net/http" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" ) func main() { router := gin.Default() upgrader := websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, } router.GET("/ws", func(c *gin.Context) { conn, err := upgrader.Upgrade(c.Writer, c.Request, nil) if err != nil { log.Println("Failed to upgrade connection:", err) return } // TODO: 处理连接和消息 }) router.Run(":8000") }
connections := make(map[*websocket.Conn]bool) // 存储所有连接的映射表 router.GET("/ws", func(c *gin.Context) { conn, err := upgrader.Upgrade(c.Writer, c.Request, nil) if err != nil { log.Println("Failed to upgrade connection:", err) return } connections[conn] = true for { _, msg, err := conn.ReadMessage() if err != nil { log.Println("Error reading message:", err) delete(connections, conn) conn.Close() break } // 广播消息给所有连接 for conn := range connections { err := conn.WriteMessage(websocket.TextMessage, msg) if err != nil { log.Println("Error broadcasting message:", err) delete(connections, conn) conn.Close() } } } })
Dalam kod di atas, kami menggunakan jadual pemetaan
- Akhir sekali, kami perlu melaksanakan antara muka mudah di bahagian hadapan untuk menguji fungsi pengurusan jadual dalam talian berbilang orang kami. Dalam direktori akar projek, buat fail bernama
index.html
dan tambahkan kod berikut dalam fail:main.go
的文件,并在文件中添加以下代码: - 处理连接和消息:
在我们的Websocket服务器中,我们需要实现对连接的处理和消息的广播功能。在路由处理函数中添加以下代码: - 前端实现:
最后,我们需要在前端实现一个简单的界面来测试我们的多人在线日程管理功能。在项目的根目录下,创建一个名为index.html
rrreee Dalam kod di atas, kami menggunakan objek WebSocket JavaScript untuk berkomunikasi dengan pelayan Wujudkan sambungan dan dengar input pengguna dan mesej pelayan. Apabila pengguna mengklik butang Hantar, kami menghantar mesej yang dimasukkan ke pelayan. Pada masa yang sama, apabila mesej diterima daripada pelayan, kami menambah mesej itu pada senarai mesej pada antara muka. - Perpustakaan Soket Web Gorilla: https://github.com/gorilla/websocket
- Pelaksanaan bahagian hadapan:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Schedule</title> </head> <body> <h1>Schedule</h1> <input type="text" id="message" placeholder="Enter your message"> <button id="send">Send</button> <ul id="messages"></ul> <script> const socket = new WebSocket("ws://localhost:8000/ws"); const messageInput = document.getElementById("message"); const sendButton = document.getElementById("send"); const messagesList = document.getElementById("messages"); sendButton.addEventListener("click", () => { const message = messageInput.value; socket.send(message); messageInput.value = ""; }); socket.addEventListener("message", (event) => { const message = document.createElement("li"); message.innerHTML = event.data; messagesList.appendChild(message); }); </script> </body> </html>
上述代码中,我们使用了Gin框架创建了一个简单的HTTP服务器,并在/ws
路径上注册了一个Websocket路由。在路由处理函数中,我们将Upgrade HTTP连接升级为Websocket连接,并获取到与客户端建立的连接。
上面的代码中,我们使用一个映射表connections
来存储所有连接。当有新的连接建立时,我们将该连接添加到映射表中。同时,我们通过一个无限循环来读取来自客户端的消息,并将该消息广播给所有连接。
Ringkasan:
Artikel ini memperkenalkan cara menggunakan teknologi Golang dan Websocket untuk melaksanakan fungsi pengurusan jadual dalam talian berbilang orang. Kami mula-mula mencipta pelayan Websocket dan melaksanakan pemprosesan sambungan dan fungsi penyiaran mesej. Kemudian, kami melaksanakan antara muka mudah pada bahagian hadapan untuk menguji kefungsian kami. Melalui artikel ini, saya berharap pembaca dapat memahami dan menguasai kaedah dan teknik penggunaan Golang dan Websocket untuk mencapai fungsi yang serupa.
Pautan rujukan:
Atas ialah kandungan terperinci Panduan Pembangunan Soket Web golang: Melaksanakan fungsi pengurusan jadual dalam talian berbilang orang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

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

Membaca dan menulis fail dengan selamat dalam Go adalah penting. Garis panduan termasuk: Menyemak kebenaran fail Menutup fail menggunakan tangguh Mengesahkan laluan fail Menggunakan tamat masa konteks Mengikuti garis panduan ini memastikan keselamatan data anda dan keteguhan aplikasi anda.

Bagaimana untuk mengkonfigurasi pengumpulan sambungan untuk sambungan pangkalan data Go? Gunakan jenis DB dalam pakej pangkalan data/sql untuk membuat sambungan pangkalan data untuk mengawal bilangan maksimum sambungan serentak;

Golang dan C++ masing-masing adalah sampah yang dikumpul dan bahasa pengaturcaraan pengurusan memori manual, dengan sistem sintaks dan jenis yang berbeza. Golang melaksanakan pengaturcaraan serentak melalui Goroutine, dan C++ melaksanakannya melalui benang. Pengurusan memori Golang adalah mudah, dan C++ mempunyai prestasi yang lebih kukuh. Dalam kes praktikal, kod Golang adalah lebih ringkas dan C++ mempunyai kelebihan prestasi yang jelas.

Keluk pembelajaran seni bina rangka kerja Go bergantung pada kebiasaan dengan bahasa Go dan pembangunan bahagian belakang serta kerumitan rangka kerja yang dipilih: pemahaman yang baik tentang asas bahasa Go. Ia membantu untuk mempunyai pengalaman pembangunan bahagian belakang. Rangka kerja yang berbeza dalam kerumitan membawa kepada perbezaan dalam keluk pembelajaran.

Cara menjana unsur rawak senarai dalam Golang: gunakan rand.Intn(len(senarai)) untuk menjana integer rawak dalam julat panjang senarai gunakan integer sebagai indeks untuk mendapatkan elemen yang sepadan daripada senarai.

Rangka kerja Go menyerlah kerana kelebihan prestasi tinggi dan konkurensinya, tetapi ia juga mempunyai beberapa kelemahan, seperti agak baharu, mempunyai ekosistem pembangun yang kecil dan kekurangan beberapa ciri. Selain itu, perubahan pantas dan keluk pembelajaran boleh berbeza dari rangka kerja ke rangka kerja. Rangka kerja Gin ialah pilihan popular untuk membina API RESTful kerana penghalaan yang cekap, sokongan JSON terbina dalam dan pengendalian ralat yang berkuasa.

Amalan terbaik: Cipta ralat tersuai menggunakan jenis ralat yang ditakrifkan dengan baik (pakej ralat) Sediakan lebih banyak butiran Log ralat dengan sewajarnya Sebarkan ralat dengan betul dan elakkan menyembunyikan atau menyekat ralat Balut seperti yang diperlukan untuk menambah konteks

Bagaimana untuk menggunakan dokumentasi rangka kerja Go? Tentukan jenis dokumen: tapak web rasmi, repositori GitHub, sumber pihak ketiga. Fahami struktur dokumentasi: permulaan, tutorial mendalam, manual rujukan. Cari maklumat seperti yang diperlukan: Gunakan struktur organisasi atau fungsi carian. Fahami istilah dan konsep: Baca dengan teliti dan fahami istilah dan konsep baharu. Kes praktikal: Gunakan Beego untuk mencipta pelayan web mudah. Dokumentasi rangka kerja Go yang lain: Gin, Echo, Buffalo, Fiber.
