Cara menggunakan acara html5 server-sent

Cara menggunakan acara html5 server-sent

Objektif

Setelah membaca tutorial ini, Anda harus dapat memahami dan memanfaatkan acara HTML5 Server-Sent.

Persyaratan

  • Tidak ada persyaratan khusus yang diperlukan

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root
    langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - Diberikan perintah linux untuk dieksekusi sebagai pengguna biasa

Perkenalan

Acara server-sent adalah sebuah Html5 teknologi yang memungkinkan klien untuk secara otomatis memantau pemberitahuan acara dari server, dan bereaksi sesuai kebutuhan. Teknologi ini sangat berguna untuk memberi tahu acara langsung, untuk mengimplementasikan, misalnya, aplikasi pesan langsung atau umpan berita. Dalam tutorial ini kita akan melihat cara mengimplementasikan teknologi ini menggunakan PHP dan JavaScript.

Contoh sederhana

Demi tutorial ini, kami akan bekerja dengan daftar "hewan" yang akan ditampilkan di halaman HTML sederhana. Sementara dalam aplikasi dunia nyata, data akan disimpan dan diambil dari database, dalam hal ini, untuk kesederhanaan, kami akan menggunakan array PHP. Yang ingin kami peroleh adalah pemberitahuan waktu nyata tentang perubahan dalam daftar hewan, sehingga kami dapat memperbarui halaman HTML kami, tanpa harus menyegarkannya.



Kode sisi server

Untuk memulainya, mari kita mengisi berbagai hewan kecil kita di Hewan.php File (kami bekerja di direktori root dari server web kami virtualhost):

Menyalin

Simpan dan tutup file sebagai Hewan.php. Sekarang, untuk bagian terpenting: kita harus menulis skrip yang akan memancarkan pesan yang akhir-akhir ini digunakan oleh kode javascript sisi klien kami. Dengan banyak fantasi kita akan memberi nama naskahnya naskah.php. Kode ini sangat sederhana, ini dia:

Menyalin

Hal pertama yang perlu diperhatikan di sini adalah bahwa kami menelepon header Fungsi dalam baris 2-3: Ini adalah fungsi yang digunakan untuk mengirim header http mentah. Dalam hal ini kami menyebutnya dua kali: yang pertama di baris 2 untuk mengatur Kontrol cache bidang header dan tentukan arahan caching (tidak ada cache halaman), yang kedua dalam baris 3, untuk mengatur Jenis konten ke Teks/Event-stream. Pengaturan header tersebut diperlukan agar skrip kami berfungsi dengan benar. Penting juga untuk memperhatikan bahwa bekerja dengan benar, header Fungsi harus selalu dipanggil sebelum output lain dibuat.

Setelah menyiapkan header HTML, kami hanya menggunakan membutuhkan_once pernyataan di baris 6 untuk meminta konten dari Hewan.php file, yang berisi array yang kami tulis sebelumnya. Dalam skenario kasus nyata, ini akan digantikan oleh a Kueri SQL untuk mengambil informasi tersebut dari database.

Akhirnya di baris 9-11, kami mengirimkan tanggapan kami kepada klien: JSON-encoded Array "Hewan". Suatu hal yang sangat penting untuk diperhatikan: Format acara sisi server mengharuskan setiap respons yang dikirim oleh server diawali oleh data: string dan diikuti oleh dua Karakter baru. Dalam hal ini kami menggunakan \N Karakter baru karena kami berjalan di platform seperti UNIX; Untuk memastikan kompatibilitas lintas platform, kami akan menggunakan Php_eol konstan.

Bahkan mungkin untuk memecahkan pesan respons pada beberapa baris: dalam hal ini setiap baris, seperti yang dikatakan sebelumnya, harus dimulai dengan "data:" dan harus diikuti oleh satu karakter garis baru tunggal. Diperlukan garis baru tambahan hanya pada baris terakhir.

Server juga dapat mengontrol seberapa sering klien harus mencoba untuk terhubung kembali (default 3 detik), dan nama peristiwa (default adalah "pesan") yang dikirim ke klien. Untuk menyesuaikan yang pertama, kita harus menggunakan mencoba kembali Petunjuk diikuti oleh interval waktu yang diinginkan, dinyatakan dalam milidetik. Misalnya, untuk mengatur interval 1 detik:

echo "coba lagi: 1000 \ n";

Perhatikan bahwa bahkan di sini, diperlukan garis baru yang tertinggal. Untuk mengubah nama acara, sebagai gantinya, kita harus menggunakan peristiwa pengarahan:

echo "acara: CustomEvent \ n";

Acara default adalah "pesan": Ini penting karena acara tersebut harus ditentukan dalam kode JavaScript klien saat menambahkan pendengar acara, seperti yang akan kita lihat sebentar lagi.

Setelah mengirimkan tanggapan kami, kami menelepon menyiram Fungsi: Ini diperlukan untuk ouput data ke klien.



Kode samping klien

Hal pertama yang akan kami lakukan dengan sisi klien adalah menyiapkan file HTML kami dengan daftar hewan yang tersedia:

   
Menyalin

Ini benar -benar beberapa HTML dasar dengan sedikit PHP untuk menampilkan daftar hewan pada saat pemuatan halaman dan untuk memasukkan kami .file js (skrip.js), tetapi akan server tujuan kita. Sekarang, mari kita lihat bagaimana sebenarnya kita dapat menggunakan acara sisi server. Hal pertama yang harus kami lakukan adalah instantiate Objek sumber acara. Dalam file JavaScript kami, tulis:

Biarkan eventsource = eventsource baru ('skrip.php '); 
Menyalin

Seperti yang Anda lihat, kami meneruskan jalur ke skrip server kami sebagai argumen di Eventsource Konstruktor Objek. Objek ini akan membuka koneksi ke server. Sekarang, kita harus menambahkan pendengar acara, Sehingga kita dapat melakukan beberapa tindakan saat pesan diterima dari server:

Biarkan eventsource = eventsource baru ('skrip.php '); Eventsource.AddEventListener ("Message", Function (Event) Let Data = JSON.Parse (acara.data); Biarkan ListElements = dokumen.GetElementsByTagname ("Li"); untuk (biarkan i = 0; i < listElements.length; i++)  let animal = listElements[i].textContent; if (!data.includes(animal))  listElements[i].style.color = "red";   ); 
Menyalin

Saat pesan diterima, kami menggunakan Json.parse Metode dalam baris 4 untuk mengubah data yang dikirim oleh server (string, yang terkandung di data Properti Objek Acara), ke dalam array JavaScript.

Setelah itu kami mengulang di baris 7-11 melalui semua elemen dengan

  • Tag, yang merupakan elemen dari daftar hewan kami: Jika beberapa elemen tampaknya tidak lagi berada di array yang dikirim oleh server, warna teks yang terkandung dalam daftar diubah menjadi merah, karena "hewan" adalah tidak lebih lama tersedia (solusi yang lebih baik adalah hanya memasukkan nama elemen yang diubah atau hilang dalam respons server, tetapi tujuan kami di sini hanya untuk menunjukkan bagaimana teknologi bekerja). Perubahan halaman akan terjadi secara real time, jadi tidak perlu menyegarkan. Anda dapat mengamati bagaimana halaman kami mengambil keuntungan dari acara yang dikirim server, dalam video di bawah ini:

    Seperti yang Anda lihat, segera setelah "kucing" dihapus dari array "Hewan" (sumber data kami) elemen yang ditampilkan di halaman HTML dimodifikasi, untuk mencerminkan perubahan itu.

    Aliran data antara server dan klien dapat terganggu dengan menggunakan menutup metode Eventsource obyek:

    Eventsource.menutup()

    Untuk menangani koneksi membuka, Dan kesalahan acara, pendengar acara khusus dapat ditambahkan ke objek.

    Tutorial Linux Terkait:

    • Hal -hal yang harus diinstal pada ubuntu 20.04
    • Cara Mengirim Pemberitahuan Desktop Menggunakan Notify-Send
    • Cara menangani acara ACPI di Linux
    • Cara Membangun Aplikasi Tkinter Menggunakan Objek Berorientasi…
    • Pengantar Otomatisasi Linux, Alat dan Teknik
    • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
    • Perintah Linux: 20 perintah terpenting teratas yang Anda butuhkan untuk…
    • Perintah Linux Dasar
    • Daftar dan Instalasi Klien FTP di Ubuntu 22.04 Linux…
    • Unduh Live CD/DVD Linux