13 poin oleh disjukr 2022-06-15 | 1 komentar | Bagikan ke WhatsApp

Di Riiid, seperti banyak startup lain yang berfokus pada aplikasi mobile, kami menggunakan pendekatan mengembangkan layar yang disediakan secara umum di tiap platform mobile sebagai web, lalu menyematkannya dalam bentuk WebView.

Secara terpisah, untuk iterasi pengembangan WebView yang cepat, kami juga membuat halaman web mobile virtual yang meniru native mobile dengan menggunakan iframe alih-alih WebView, dan memakainya untuk pengembangan layar web.

Karena layar yang dibuat sebagai halaman web memiliki lifecycle yang lebih pendek daripada native dan hanya memiliki izin API yang terbatas, pada akhirnya perlu menulis kode untuk berkomunikasi dengan cangkang yang memuat WebView tersebut (native, parent window).

Namun, antarmuka untuk berkomunikasi dengan WebView di masing-masing cangkang memiliki keterbatasan yang merepotkan (misalnya tidak mendukung komunikasi dua arah, atau hanya mendukung menjalankan potongan kode JS arbitrer), dan karena antarmukanya sangat berbeda di tiap cangkang, penulisan kode komunikasinya menjadi melelahkan.

Kami pada dasarnya menggunakan protobuf dan grpc saat klien web/mobile berkomunikasi dengan server API. protobuf adalah bahasa skema yang digunakan untuk mendeskripsikan antarmuka layanan, sedangkan grpc adalah lapisan protokol yang mengubah permintaan abstrak yang didefinisikan dengan protobuf menjadi permintaan HTTP yang nyata.

Karena kami sudah menggunakan protobuf untuk komunikasi dengan backend dan para engineer pun sudah terbiasa, kami sejak lama memutuskan untuk menggunakan protobuf guna menyelesaikan masalah pada cara komunikasi WebView yang ada, sekaligus menyatukan workflow.

Setelah mengembangkan berbagai aplikasi mobile selama bertahun-tahun, kami sudah menggunakan pendekatan codegen protobuf untuk komunikasi antara cangkang <-> WebView, dan baru-baru ini saat membuat aplikasi baru, kami memutuskan untuk meningkatkan teknologi ini sekaligus menjadikannya open source.
wrp lahir dari latar belakang tersebut; ini adalah lapisan protokol khusus WebView yang berperan mirip grpc.

wrp mendukung typescript & react / kotlin & compose / swift & tca, stream, komunikasi dua arah, pemulihan konteks komunikasi ketika halaman web dimuat ulang, dan juga sampai tingkat tertentu dapat menangani situasi ketidakcocokan protokol antara WebView dan aplikasi native akibat lambatnya pengguna memperbarui versi aplikasi native mereka.

Saat ini fitur-fitur utama wrp baru saja selesai dikembangkan, jadi belum stabil, tetapi jika Anda tertarik dengan teknologi ini, kami berharap Anda bisa bergabung ke server Discord kami untuk berdiskusi bersama.


Server Discord Pbkit: https://discord.gg/PHmV3nhvQq

Web - TypeScript & React

iOS - Swift & TCA

Android - Kotlin & Compose


(Isinya dipindahkan dari Twitter setelah sedikit diedit.)
https://twitter.com/disjukr/status/1537034296959315968

1 komentar

 
disjukr 2022-06-15