WebSocket adalah protokol komunikasi dua arah yang memungkinkan komunikasi real-time antara klien dan server. Dalam tutorial ini, kita akan membahas cara menggunakan bahasa pemrograman Go (Golang) untuk membangun aplikasi WebSocket sederhana. Aplikasi ini akan terdiri dari server WebSocket yang akan mengirim pesan ke klien secara periodik.
Persiapan
Sebelum memulai, pastikan Anda memiliki Go terinstal di komputer Anda. Anda dapat mengunduh dan menginstalnya dari situs resmi Go (https://go.dev/).
Baca Juga
Langkah 1: Membuat Server WebSocket
Langkah pertama adalah membuat server WebSocket menggunakan Go. Berikut adalah contoh kode untuk membuat server WebSocket sederhana:
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func main() { http.HandleFunc("/", handleWebSocket) log.Fatal(http.ListenAndServe(":8080", nil)) } func handleWebSocket(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("Failed to upgrade connection:", err) return } defer conn.Close() for { // Menerima pesan dari klien messageType, p, err := conn.ReadMessage() if err != nil { log.Println("Failed to read message:", err) break } // Menampilkan pesan yang diterima dari klien log.Printf("Received message: %s", p) // Mengirim pesan ke klien err = conn.WriteMessage(messageType, p) if err != nil { log.Println("Failed to send message:", err) break } } }
Kode di atas menggunakan paket gorilla/websocket
yang populer untuk mempermudah penggunaan WebSocket di Go. Ini mendefinisikan fungsi handleWebSocket
sebagai penanganan permintaan WebSocket. Fungsi ini menghubungkan klien dengan server, membaca pesan yang diterima dari klien, menampilkan pesan tersebut, dan mengirim kembali pesan yang sama ke klien.
Kode di atas juga menggunakan http.HandleFunc
untuk mengaitkan permintaan ke URL root (“/”) dengan fungsi handleWebSocket
. Kemudian, http.ListenAndServe
digunakan untuk memulai server dan mendengarkan permintaan masuk di port 8080.
Langkah 2: Membuat Klien WebSocket
Setelah membuat server WebSocket, langkah selanjutnya adalah membuat klien WebSocket untuk terhubung ke server. Berikut adalah contoh kode untuk membuat klien WebSocket menggunakan Go:
package main import ( "log" "os" "os/signal" "time" "github.com/gorilla/websocket" ) func main() { interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, os.Interrupt) u := "ws://localhost:8080/" log.Printf("Connecting to %s", u) c, _, err := websocket.DefaultDialer.Dial(u, nil) if err != nil { log.Fatal("Failed to connect:", err) } defer c.Close() done := make(chan struct{}) go func() { defer close(done) for { _, message, err := c.ReadMessage() if err != nil { log.Println("Failed to read message:", err) return } log.Printf("Received message: %s", message) } }() ticker := time.NewTicker(time.Second) defer ticker.Stop() for { select { case <-done: return case <-ticker.C: err := c.WriteMessage(websocket.TextMessage, []byte("Hello, server!")) if err != nil { log.Println("Failed to send message:", err) return } log.Println("Message sent to server") case <-interrupt: log.Println("Interrupt signal received, exiting...") err := c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) if err != nil { log.Println("Failed to send close message:", err) return } select { case <-done: case <-time.After(time.Second): } return } } }
Kode di atas menggunakan paket gorilla/websocket
yang sama untuk membuat koneksi WebSocket ke server. Kode ini menghubungkan klien ke server WebSocket yang berjalan di ws://localhost:8080/
.
Klien akan membaca pesan yang diterima dari server dan menampilkannya. Selain itu, klien juga akan mengirim pesan “Hello, server!” ke server setiap detik menggunakan time.Ticker
.
Menjalankan Aplikasi
Setelah menyelesaikan langkah-langkah di atas, Anda dapat menjalankan aplikasi dengan menjalankan server dan klien di terminal terpisah.
Buka terminal pertama, lalu masuk ke direktori server, dan jalankan server dengan menjalankan perintah berikut:
go run server.go
Buka terminal kedua, masuk ke direktori klien, dan jalankan klien dengan menjalankan perintah berikut:
go run client.go
Jika semuanya berjalan dengan sukses, Anda akan melihat pesan “Hello, server!” yang diterima oleh klien dan dicetak di terminal server.
Kesimpulan
Dalam tutorial ini, kita telah belajar cara menggunakan Golang untuk membangun aplikasi WebSocket sederhana. Kita membuat server WebSocket menggunakan paket gorilla/websocket
dan klien WebSocket untuk terhubung ke server. Anda sekarang dapat mengembangkan aplikasi WebSocket yang lebih kompleks dengan menggunakan dasar-dasar yang diperoleh dari tutorial ini.