Pengenalan
Buka koneksi WebSocket waktu nyata untuk menerima konten, pembaruan pesanan, dan pembaruan pengguna tanpa polling.
Informasi lebih lanjut tentang antarmuka pengguna modul ini https://doc.oneentry.cloud/docs/events/introduction
🎯 Apa yang dilakukan modul ini?
Modul WS (WebSocket) memungkinkan Anda menerima notifikasi waktu nyata - pembaruan konten, perubahan pesanan, tindakan pengguna - melalui koneksi yang persisten, sehingga server mengirimkan pembaruan kepada Anda secara instan alih-alih Anda yang melakukan polling. Ini memungkinkan fitur langsung seperti notifikasi, obrolan langsung, dan dasbor waktu nyata.
Metode tunggal, connect(), membuka koneksi dan mengembalikan Socket dari socket.io. Ini adalah synchronous dan memerlukan pengguna yang terautentikasi, jadi autentikasi terlebih dahulu.
🚀 Memulai dengan Cepat
Inisialisasi modul dari defineOneEntry:
const { WS } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
connect() bersifat synchronous dan mengembalikan Socket dari socket.io (tanpa await). Lampirkan penangan acara dengan socket.on(...):
// connect() requires an authorized user — authenticate first via AuthProvider.
const socket = WS.connect();
socket.on('connect', () => {
console.log('WebSocket connected');
});
// Listen for an event by its marker (configured in the Events module).
socket.on('my_event', (payload) => {
console.log('Update received!', payload);
});
✨ Konsep Kunci
Apa itu WebSocket?
WebSocket adalah koneksi dua arah yang persisten antara klien dan server:
- Koneksi Persisten - Tetap terbuka, tanpa handshake berulang
- Dua Arah - Baik klien maupun server dapat mengirim pesan
- Waktu Nyata - Pengiriman pesan instan
- Berdasarkan Acara - Dengarkan acara dengan
socket.on(...) - Efisien - Beban rendah dibandingkan dengan polling HTTP
WebSocket vs HTTP Polling
| Fitur | WebSocket | HTTP Polling |
|---|---|---|
| Koneksi | Persisten (tetap terbuka) | Koneksi berulang |
| Latensi | Sub-detik | Bergantung pada interval (2-30s) |
| Efisiensi | Sangat efisien | Boros (banyak respons kosong) |
| Beban Server | Rendah (hanya acara) | Tinggi (permintaan konstan) |
| Kasus Penggunaan | Pembaruan waktu nyata | Diterima untuk pembaruan non-kritis |
Siklus Hidup Koneksi
1. Authenticate the user (AuthProvider.auth)
↓
2. Open the connection: const socket = WS.connect()
↓
3. Wait for the 'connect' event: socket.on('connect', ...)
↓
4. Listen for events: socket.on('<event_marker>', callback)
↓
5. Server pushes events as they occur
↓
6. Disconnect when done: socket.disconnect()
Acara apa yang tiba melalui koneksi
Tidak ada katalog tetap untuk nama acara SDK. Acara terjadi sesuai dengan konfigurasi modul Acara Anda di panel admin (acara harus memiliki opsi WebSocket yang diaktifkan). Anda mendengarkan acara berdasarkan penandanya dengan socket.on('<event_marker>', callback).
Payload tergantung pada sumber acara. Bidang payload yang umum (lihat connect() untuk contoh lengkap):
| Bidang Payload | Tiba untuk | Berisi |
|---|---|---|
attributes | Setiap acara | Atribut acara itu sendiri |
product | Acara katalog (produk) | Atribut produk ditambah title |
user | Acara formulir pengguna | Bidang dari formulir pengguna |
order | Acara pesanan | id pesanan dan atribut |
email / code | Formulir pendaftaran / kode | Bidang formulir tambahan |
📋 Apa yang Perlu Anda Ketahui
Otorisasi diperlukan
connect() memerlukan pengguna yang terautentikasi — panggil AuthProvider.auth(...) sebelum terhubung. Koneksi diotentikasi dengan token akses pengguna ditambah token aplikasi Anda dari defineOneEntry(). Jika tidak ada pengguna yang terautentikasi, SDK mencatat kesalahan.
connect() bersifat synchronous
connect() segera mengembalikan Socket dari socket.io — jangan await itu. Tunggu acara connect sebelum bergantung pada soket, lalu lampirkan penangan dengan socket.on(...).
Berlangganan setelah koneksi terbuka, bersihkan saat selesai
Lampirkan penangan acara setelah acara connect terjadi, dan lepaskan mereka (socket.off) serta panggil socket.disconnect() ketika koneksi tidak lagi diperlukan (misalnya saat komponen dibongkar atau pengguna keluar) untuk mencegah kebocoran memori di SPAs.
Penyambungan Kembali
socket.io secara otomatis menyambung kembali secara default. Untuk menyesuaikan, dengarkan acara disconnect dan connect_error dan sambung kembali dengan exponential backoff, mengatur ulang penundaan pada connect yang berhasil.
📊 Tabel Referensi Cepat
| Metode | Deskripsi | Kasus Penggunaan |
|---|---|---|
| connect() 🔐 | Terhubung ke server WebSocket | Membangun koneksi |
🔐
connect()memerlukan pengguna yang terautentikasi — autentikasi terlebih dahulu melalui AuthProvider. Setelah terhubung, lampirkan penangan acara dengansocket.on(...).
❓ Pertanyaan Umum (FAQ)
Bagaimana cara saya terhubung ke server WebSocket?
Gunakan WS.connect() untuk membuka koneksi — ini bersifat synchronous dan mengembalikan Socket dari socket.io. Ini memerlukan pengguna yang terautentikasi, jadi panggil AuthProvider.auth(...) terlebih dahulu. Tunggu acara connect sebelum bergantung pada soket, lalu lampirkan penangan dengan socket.on('<event_marker>', callback).
Acara apa yang bisa saya langgani?
Tidak ada daftar acara SDK yang tetap. Acara ditentukan oleh konfigurasi modul Acara Anda di panel admin (dengan opsi WebSocket diaktifkan), dan Anda mendengarkan acara berdasarkan penandanya dengan socket.on('<event_marker>', callback). Lihat connect() untuk contoh payload (produk, pengguna, pesanan, formulir).
Bagaimana cara saya menangani pemutusan koneksi?
socket.io secara otomatis menyambung kembali secara default. Untuk menyesuaikan, dengarkan acara disconnect dan connect_error dan sambung kembali dengan exponential backoff (misalnya, 1s, 2s, 4s, 8s, hingga maksimum), mengatur ulang penghitung penundaan pada connect yang berhasil.
Bagaimana cara saya mencegah kebocoran memori dengan langganan WebSocket?
Lepaskan penangan acara (socket.off) dan panggil socket.disconnect() saat komponen dibongkar atau koneksi tidak lagi diperlukan. Di React, lakukan ini dalam pembersihan useEffect; di Vue, dalam beforeUnmount.
🎓 Praktik Terbaik
- Autentikasi terlebih dahulu -
connect()memerlukan pengguna yang terautentikasi. - Jangan tunggu connect() - Ini bersifat synchronous dan mengembalikan
Socket. - Berlangganan setelah koneksi terbuka - Lampirkan penangan setelah acara
connectterjadi. - Bersihkan - Lepaskan penangan (
socket.off) dansocket.disconnect()untuk mencegah kebocoran memori di SPAs. - Tangani penyambungan kembali - socket.io menyambung kembali secara otomatis; sesuaikan dengan
disconnect/connect_errordan backoff jika diperlukan. - Validasi payload acara - Bentuk payload tergantung pada sumber acara; periksa bidang sebelum menggunakannya.
🔗 Dokumentasi Terkait
- Modul AuthProvider - Otorisasi pengguna sebelum terhubung
- Modul Pesanan - Acara pesanan untuk pelacakan pesanan waktu nyata
- Modul Pengguna - Acara pengguna untuk notifikasi pendaftaran
- API WebSocket