
Masa Nyata
Masa, konsep pelik, dicipta oleh kami, untuk menerangkan bagaimana perubahan mempengaruhi persepsi kita terhadap Dunia. Walaupun hanya itu, konsep, kehidupan kita berputar di sekelilingnya dan oleh itu penting untuk mempertimbangkannya. Kejuruteraan Perisian dan pembangunan tidak berbeza. Di mana internet berkuasa, tidak dapat dibayangkan pada zaman ini, untuk membangunkan aplikasi web (atau mana-mana aplikasi dalam hal itu) dan klik pada butang muat semula/F5/Ctrl+r untuk mendapatkan data terkini. Aplikasi kami mestilah masa nyata.
Apa itu a aplikasi masa nyata (RTA), anda bertanya?
Ia adalah aplikasi yang memberikan rasa segera contohnya jika pengguna A menukar beberapa data dalam aplikasi, perubahan ini akan diketahui oleh semua pengguna dalam kelewatan paling singkat, tanpa perlu memuatkan semula aplikasi.
Tambahan pula, kriteria kependaman yang mempengaruhi kelewatan penghantaran data pada aplikasi (internet, pemprosesan data dan sebagainya) adalah agak penting apabila kita ingin melaksanakan aplikasi masa nyata. Bergantung pada sejauh mana kami boleh menghormati tarikh akhir, permohonan kami termasuk dalam salah satu daripada tiga kategori berikut:
- Masa Nyata Sukar, di mana kami mesti menghormati setiap tarikh akhir dalam permohonan kami. Jika tidak, ia mengakibatkan kegagalan sistem keseluruhan.
- Firma Masa Nyata, apabila terlepas beberapa tarikh akhir boleh diterima. Sebarang data yang diterima selepas tarikh akhir adalah sia-sia dan akibatnya, kualiti permohonan adalah berkadar songsang dengan kuantiti tarikh akhir yang terlepas.
- Masa Nyata Lembut, kegunaan data yang diterima selepas tarikh akhirnya berkurangan, dan seterusnya kualiti sistem.
Dan persoalan yang timbul ialah: Di manakah Web dalam semua ini? Atau lebih tepat lagi, di manakah kedudukan aplikasi Web dalam ketiga-tiga kategori tersebut?
Sudah tentu, aplikasi web tidak boleh diletakkan dalam kategori pertama, kerana Web sentiasa mengalami kelewatan, dan hampir mustahil untuk memastikan setiap tarikh akhir dalam permohonan kami kerana entropi internet.
Apl Web boleh, walaupun, diletakkan dalam kategori yang terakhir.
Selepas semua perbincangan tentang RTA ini, nampaknya setiap aplikasi, pada masa kini, mesti memasukkan komponen masa nyata. Seperti yang telah disebutkan, kami mahu aplikasi kami menjadi reaktif. Apabila beberapa perubahan dibuat, kesannya mesti riak melalui semua pengguna yang menggunakan aplikasi. Pemberitahuan, mesej sembang, suapan berita, dsb. Semua ini adalah contoh masa nyata dalam aplikasi kami.
Walau bagaimanapun, membina RTA tidak semestinya sekeping kek. Ini membawa kerumitan tambahan dalam seni bina kami kerana ia memerlukan lebih banyak sumber yang juga membayangkan penyegerakan antara mereka. Dan cara kita mesti mengendalikan data kita juga boleh menjadi agak rumit (urutan antara mesej, kelewatan, kehilangan dan penghantaran semula, dll.).
Membina Aplikasi Masa Nyata
Sekarang, mari bercakap perniagaan!
Bagaimanakah kita membina aplikasi masa nyata?
Cukup lucu, dari sudut pandangan seni bina, kita sudah mempunyai asas, Pelayan dan Pelanggan. Walau bagaimanapun, bahagian yang sukar adalah komunikasi antara mereka. Kami sudah berkomunikasi dengan pelayan melalui permintaan HTTP dan pelayan menghantar respons HTTP. Walau bagaimanapun, kami juga mahu pelayan dapat menghantar mesej kepada kami. Memperkenalkan Websocket dan Acara Dihantar Pelayan (SSE).
Websockets dan Acara Dihantar Pelayan ialah cara untuk mencapai laluan komunikasi dua hala antara pelayan dan pelanggan.
Websockets
Soket web menggunakan satu sambungan TCP (setiap soket web). Ia ialah protokol HTTP yang dinaik taraf yang membolehkan komunikasi dua arah antara klien web dan pelayan web dengan overhed rendah. (Amaran yang adil, soket web tidak ada di sini (setakat ini) cara untuk menggantikan HTTP, sila jangan gunakan soket web untuk melakukan siaran dan perolehan biasa anda.)
Sebagai kelebihan, Websockets menawarkan kami komunikasi dupleks penuh yang melepasi kebanyakan tembok api tanpa banyak konfigurasi semula. Kami boleh menukar apa-apa jenis data, dan ia juga mempunyai model keselamatan yang baik (model keselamatan berasaskan asal).
Walau bagaimanapun, masih terdapat proksi yang tidak menyokong protokol, dan Pelayan Websocket memerlukan pengoptimuman yang berbeza jika dibandingkan dengan pelayan web biasa.

Acara Dihantar Pelayan
SSE, yang sering kali diabaikan, adalah permintaan dan respons HTTP biasa, sama seperti pengundian lama tanpa overhed yang dibesar-besarkan. Permintaan pertama yang mesti dihantar walaupun mesti mempunyai jenis kandungan teks/strim-acara. Sebaik sahaja permintaan ini dihantar dan pelayan mengakui, ia boleh menolak mesej kepada pelanggan sesuka hati.
Sebagai faedah, SSE menggunakan HTTP biasa, penyambungan semula dan id acara diberikan oleh pelaksanaan dan ia adalah protokol yang mudah.
Malangnya, SSE tidak mempunyai sokongan binari dan ia terhad kepada nombor maks o sambungan HTTP.

Websockets lwn. SSE
Selepas mendedahkan kedua-dua alat ini, persoalan yang timbul ialah:
Bilakah saya harus menggunakan satu atau yang lain?
Adakah yang lebih baik daripada yang lain?
Nah, ia bergantung (ia tidak pernah semudah itu, bukan?).
Websockets, seperti yang telah dinyatakan, paling baik digunakan apabila kita benar-benar mahukan laluan dwiarah antara pelayan dan pelanggan, biasanya apabila kita membina aplikasi kerjasama, permainan berbilang pemain, sembang, dsb.
Apabila kami hanya mahu menerima kemas kini daripada pelayan kami contohnya pemberitahuan, strim kemas kini seperti suapan, SSE sangat bagus kerana ia tidak memerlukan banyak kerja dan ia menyelesaikan tugas.
Yang Berhormat menyebut
Walaupun, kami bercakap tentang cara terbaik untuk mencapai masa nyata, terdapat beberapa alat lain yang patut disebut.
Pangkalan data masa nyata adalah, seperti namanya, pangkalan data yang disediakan untuk mengendalikan data menggunakan prinsip pengkomputeran masa nyata, jadi data sedia ada untuk dihantar kepada pelanggan jika diperlukan dan mengendalikan lebih banyak data secara umum. Contoh pangkalan data jenis ini ialah RethinkDB, dan Firebase juga menawarkan pangkalan data masa nyata.
Ad Summam
Saya rasa ia sudah cukup untuk satu artikel, bukan? Jadi, untuk membuat kesimpulan, apabila kita bercakap tentang masa nyata untuk aplikasi web, komponen masa nyata aplikasi hanya boleh digambarkan sebagai lembut atau tegas dan walaupun, Masa Nyata adalah bergaya dan sangat berguna, ia boleh sukar untuk memprogram / mengekalkannya atau menanganinya. Akhirnya kedua-dua Websocket dan Acara Dihantar Pelayan adalah cara untuk mencapai masa nyata dalam aplikasi kami. Pilih dengan teliti, kadangkala anda mungkin memerlukan satu atau yang lain. Jika aplikasi anda memerlukan sambungan dwiarah penuh antara pelayan dan klien, kemudian gunakan Websockets. Jika anda hanya memerlukan kemas kini gunakan SSE.
Pastikan untuk menyemak saya Repo GitHub keluar, untuk bermain dengan kedua-dua alatan ini!
Terima kasih semua kerana membaca artikel ini, sila berikan sebarang cadangan untuk penambahbaikan atau pembetulan selanjutnya.
Ditulis oleh Yoan Ribeiro
