𝗠𝗮𝗸𝗿𝗼 𝗣𝗿𝗼𝗹𝗼𝗴𝘂𝗲 𝗱𝗮𝗻 𝗘𝗽𝗶𝗹𝗼𝗴𝘂𝗲 𝗱𝗮𝗹𝗮𝗺 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲

Middleware ialah tulang belakang pemprosesan permintaan dalam Hyperlane. Kebanyakan orang menggunakan middleware permintaan dan respons standard. Walau bagaimanapun, Hyperlane menawarkan makro prologue dan epilogue khusus untuk kawalan tambahan.

Makro ini berjalan pada permulaan dan penghujung kitaran hayat permintaan. Ia membolehkan anda mengawal dengan tepat bila data sampai kepada klien.

Kitaran Hayat Permintaan:

• Permintaan tiba: Pelayan menerima permintaan HTTP. • Fasa prologue: Anda menghantar data awal seperti pengepala (headers) atau kod status. • Rantaian middleware: Fungsi-fungsi memproses permintaan. • Pengendali laluan (Route handler): Sistem membina respons. • Middleware respons: Fungsi-fungsi memproses respons. • Fasa epilogue: Data akhir dihantar (flushed) ke klien dan sambungan ditutup.

Gunakan makro ini untuk menguruskan langkah 2 dan 6.

Makro Send:

Gunakan #[try_send] untuk data bukan kritikal. Jika sambungan terputus, ia mengendalikan ralat tanpa menyebabkan kegagalan sistem. Ini sesuai untuk penstriman di mana kehilangan satu bahagian (chunk) adalah tidak menjadi masalah.

Gunakan #[send] untuk data kritikal. Ini memastikan data berjaya dihantar.

Makro Flush:

Gunakan #[try_flush] untuk cuba mengosongkan penimbal (buffer) dan mengendalikan ralat dengan lancar.

Gunakan #[flush] untuk memaksa semua data dalam penimbal dihantar ke klien. Gunakan ini untuk mengelakkan kehilangan data sebelum menutup sambungan.

Amalan Terbaik:

  • Gunakan #[try_send] untuk data penstriman bagi mengelakkan kegagalan sistem pada sambungan yang terputus.
  • Gunakan #[send] apabila penghantaran data adalah mandatori.
  • Sentiasa kosongkan (flush) penimbal anda sebelum menutup sambungan.
  • Semak stream.is_keep_alive() dalam epilogue anda untuk menguruskan penggunaan semula sambungan.
  • Gunakan makro ini untuk Server-Sent Events (SSE) bagi menolak (push) kemas kini masa nyata.
  • Kendalikan semua ralat send dan flush untuk mengelakkan kegagalan sistem.

Alatan ini memberikan anda kawalan tepat ke atas aliran data dan pemasaan respons.

Sumber: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Kod Projek: https://github.com/hyperlane-dev/hyperlane