Skip to content

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.

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.

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>

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.

  • 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.