Dasar-Dasar WebSocket
Komunikasi dua arah waktu nyata
Dasar-Dasar WebSocket adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Komunikasi Waktu Nyata Dua Arah
HTTP menggunakan pola permintaan-tanggapan: klien meminta, server menjawab, lalu koneksi secara logis berakhir. Untuk obrolan, dasbor langsung, dan permainan, Anda memerlukan saluran dua arah yang tetap terhubung. Itulah yang disediakan oleh WebSockets.
Jabat Tangan Peningkatan Protokol
Koneksi WebSocket dimulai sebagai permintaan HTTP biasa dengan tajuk khusus:
Upgrade: websocketConnection: Upgrade
Server merespons 101 Switching Protocols, lalu soket TCP digunakan kembali untuk bingkai dupleks penuh.
Mengapa Tidak Cukup Melakukan Jajak Berkala
Sebelum WebSockets, aplikasi menggunakan jajak berkala (permintaan berulang) atau jajak panjang. Keduanya memboroskan lebar pita dan menambah latensi. WebSockets mempertahankan satu koneksi terbuka, sehingga kedua pihak dapat mengirim secara langsung.
Bingkai, Bukan Permintaan
Setelah ditingkatkan, data dikirim sebagai bingkai ringan, bukan pesan HTTP. Bingkai dapat berupa teks atau biner, dan terdapat bingkai kendali untuk ping/pong serta penutupan.
Dupleks Penuh
Berbeda dengan HTTP, kedua pihak dapat mengirim kapan saja tanpa menunggu balasan. Server dapat mendorong notifikasi segera setelah sesuatu berubah, sementara klien dapat mengirim masukan secara bersamaan.
ws dibandingkan wss
Seperti http/https, WebSockets memiliki dua skema:
ws://teks biasawss://melalui TLS (gunakan ini dalam produksi)
Dukungan Pustaka Standar
Pustaka standar Go tidak memiliki implementasi WebSocket hanya di dalam net/http. Komunitas menggunakan github.com/gorilla/websocket atau nhooyr.io/websocket. Pustaka gorilla akan dibahas pada pelajaran berikutnya.
import "github.com/gorilla/websocket"Model Mental
Bayangkan WebSocket seperti panggilan telepon:
- Menelepon = jabat tangan peningkatan HTTP
- Saluran yang terbuka = koneksi persisten
- Berbicara dua arah = bingkai dua arah penuh
- Menutup telepon = bingkai penutupan
Jenis Pesan
Dua jenis bingkai data yang paling penting:
- Teks membawa UTF-8 (sering kali JSON)
- Biner membawa byte mentah (protobuf, gambar)
Bingkai kontrol (ping, pong, penutupan) mengelola koneksi itu sendiri.
Keunggulan WebSocket
Cocok digunakan untuk:
- Obrolan dan status kehadiran
- Perdagangan atau skor olahraga secara langsung
- Pengeditan kolaboratif
- Status permainan multipemain
Untuk komunikasi satu arah saja dari server ke klien, Server-Sent Events mungkin lebih sederhana.
Dapat Dijalankan: Membingkai Gagasan
Kode WebSocket memerlukan pustaka eksternal, jadi berikut analogi menggunakan pustaka standar: sebuah fungsi yang mengklasifikasikan pesan sebagai teks atau biner untuk mengilustrasikan jenis bingkai.
package main
import (
"fmt"
"unicode/utf8"
)
func frameType(data []byte) string {
if utf8.Valid(data) {
return "text"
}
return "binary"
}
func main() {
fmt.Println(frameType([]byte("hello")))
fmt.Println(frameType([]byte{0xff, 0x00, 0x01}))
}Pemeriksaan Singkat
Uji pemahaman Anda tentang dasar-dasar WebSocket.
Rangkuman
Anda telah mempelajari dasar-dasar WebSocket:
- Menyediakan komunikasi persisten dua arah penuh
- Dimulai dengan jabat tangan peningkatan HTTP (respons 101)
- Data mengalir sebagai bingkai teks atau biner; bingkai kontrol mengelola tautan
- Gunakan
wss://di lingkungan produksi; Go mengandalkan pustaka seperti gorilla/websocket
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Dasar-Dasar WebSocket” gratis?
Ya — teks lengkap “Dasar-Dasar WebSocket” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Dasar-Dasar WebSocket”?
Komunikasi dua arah waktu nyata Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Dasar-Dasar WebSocket” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar WebSocket
- Menggunakan gorilla/websocket
- Menyiarkan Pesan
- Pengelolaan Koneksi