Web Locks API mendapat perhatian baru di komunitas pengembang, terutama untuk penerapan praktisnya dalam menangani skenario token penyegaran OAuth dan koordinasi sumber daya lintas tab. Meskipun API ini telah tersedia sejak Chrome 69, diskusi terkini menyoroti signifikansinya dalam arsitektur aplikasi web modern.
Manajemen Token Penyegaran OAuth
Kasus penggunaan utama yang muncul dari komunitas melibatkan pengelolaan token penyegaran OAuth dalam aplikasi halaman tunggal (SPA) dengan beberapa tab yang terbuka. API ini menyediakan solusi elegan untuk mencegah race condition ketika beberapa tab mencoba menyegarkan token autentikasi secara bersamaan. Hal ini sangat penting mengingat token penyegaran OAuth biasanya hanya dapat digunakan sekali, dan upaya penyegaran yang bersamaan dapat menyebabkan kegagalan autentikasi.
Koordinasi Sumber Daya Lintas Tab
API ini memungkinkan manajemen sumber daya yang canggih di beberapa tab browser dalam origin yang sama. Berbeda dengan solusi penguncian berbasis memori atau localStorage tradisional, Web Locks API menyediakan mekanisme yang kuat untuk mengkoordinasikan akses ke sumber daya bersama. Seorang pengembang membagikan pengalamannya:
Ini adalah kasus penggunaan yang menarik perhatian saya: aplikasi halaman tunggal menggunakan token akses dan penyegaran untuk berinteraksi dengan API - penyegaran hanya dapat digunakan sekali, sesuai dengan praktik keamanan terbaik OAuth - SPA terbuka di lebih dari satu tab - dua tab mencoba menyegarkan token pada saat yang sama, yang kedua gagal karena token penyegaran sudah terpakai [https://news.ycombinator.com/item?id=42101434]
Pertimbangan Desain API
Komunitas telah terlibat dalam diskusi mendalam tentang pilihan desain API. Sementara beberapa pengembang menganjurkan pendekatan berbasis sewa dengan batas waktu, yang lain membela kesederhanaan implementasi saat ini dan perilaku deterministiknya. Pelepasan otomatis kunci setelah callback selesai membantu mencegah masalah umum, meskipun API menyediakan jalan keluar melalui opsi seperti 'steal' untuk kasus penggunaan lanjutan.
Kinerja dan Dukungan Browser
API ini telah mencapai dukungan browser yang luas, tersedia di semua browser utama sejak Firefox 96. Meskipun beberapa pengembang mengajukan pertanyaan tentang tolok ukur kinerja, terutama dibandingkan dengan alternatif berbasis WebAssembly menggunakan mutex tokio Rust, integrasi API dengan loop event browser berarti deadlock tidak memblokir thread atau mempengaruhi kinerja browser secara keseluruhan.
Ergonomi Pengembang
Desain berbasis callback API telah memicu diskusi tentang alternatif sintaks, dengan beberapa pengembang menyarankan integrasi masa depan dengan proposal manajemen sumber daya eksplisit TC39 menggunakan kata kunci 'using'. Namun, desain saat ini secara efektif mencegah kebocoran sumber daya sambil mempertahankan fleksibilitas untuk kasus penggunaan lanjutan.
Web Locks API merepresentasikan langkah maju yang signifikan dalam mengelola operasi bersamaan dalam aplikasi web, terutama untuk skenario yang melibatkan sumber daya bersama di beberapa tab atau worker. Sifatnya yang terbatas pada origin dan mekanisme pelepasan otomatis menjadikannya pilihan yang lebih aman dibandingkan pola penguncian tradisional.
Sumber: Web Locks API - MDN