Pembaruan real-time
Selain REST API, backend menyediakan gateway Socket.IO untuk pembaruan notifikasi dan pesanan. Alamat koneksi mengikuti host API yang sama. Gateway memverifikasi JWT ketika klien tersambung.
Autentikasi koneksi
Section titled “Autentikasi koneksi”Berikan token JWT dan jenis akun pada data autentikasi handshake Socket.IO:
const socket = io(API_URL, { auth: { role: "user", // "user", "professional", atau "admin" token: accessToken, },});Token juga dapat dikirim melalui header Authorization: Bearer <token>.
Gateway memerlukan salah satu sumber token yang valid dan nilai role yang
sesuai. Koneksi tanpa token atau dengan peran yang tidak dikenal akan ditolak.
Ruang koneksi
Section titled “Ruang koneksi”Klien yang terautentikasi bergabung ke ruang sesuai perannya:
| Peran | Ruang |
|---|---|
| Admin | admin-room |
| Profesional | professional-room dan professional:<userId> |
| Pengguna | user-room dan user:<userId> |
Event server
Section titled “Event server”Nama event berikut digunakan backend untuk mengirim pembaruan:
| Event | Penerima | Kegunaan |
|---|---|---|
order:offer |
Profesional tertentu | Penawaran pesanan kepada profesional. |
order:update |
Pengguna atau profesional tertentu | Pembaruan status pesanan. |
order:new |
Ruang admin | Pesanan baru. |
order:updated |
Ruang admin | Perubahan pesanan. |
notification:new |
Pengguna atau profesional tertentu | Notifikasi baru. |
online-admins |
Klien tersambung | Pembaruan daftar admin online saat broadcast dipanggil. |
online-professionals |
Klien tersambung | Pembaruan daftar profesional online saat broadcast dipanggil. |
online-users |
Klien tersambung | Pembaruan daftar pengguna online saat broadcast dipanggil. |
Event notifikasi admin dapat menggunakan nama event yang ditentukan oleh proses server yang mengirimkannya. Payload dan frekuensi event dapat berbeda menurut fitur; gunakan event REST sebagai sumber untuk memuat ulang detail terbaru.
Penanganan koneksi
Section titled “Penanganan koneksi”- Tangani event koneksi terputus dan sambungkan kembali hanya ketika sesuai dengan kebutuhan aplikasi.
- Jika autentikasi gagal, minta pengguna masuk kembali dan buat koneksi baru dengan token terkini.
- Jangan mengandalkan event real-time sebagai satu-satunya sumber status. Muat ulang data dari endpoint REST jika perlu memastikan nilai terbaru.
- Jangan mencatat token atau payload yang dapat mengandung data pribadi ke log klien.
