亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
Apakah prasyarat untuk melaksanakan SSE?
Bagaimana SSE berbeza dari WebSockets?
Bolehkah SSE digunakan dengan mana-mana bahasa sisi pelayan?
Bagaimana menangani kesilapan sambungan atau gangguan dalam SSE?
Bolehkah saya menggunakan SSE untuk menghantar data dari klien ke pelayan?
Adakah SSE menyokong semua penyemak imbas?
Bagaimana untuk menutup sambungan SSE?
Bolehkah saya menggunakan SSE untuk aplikasi masa nyata berbilang pengguna?
Bagaimana menggunakan SSE untuk menghantar pelbagai jenis acara?
Bolehkah saya menggunakan SSE dengan API REST?
Rumah hujung hadapan web tutorial js Melaksanakan teknologi push menggunakan acara yang dilanda pelayan

Melaksanakan teknologi push menggunakan acara yang dilanda pelayan

Feb 24, 2025 am 10:28 AM

Implementing Push Technology Using Server-Sent Events

mata teras

    API Peristiwa Server-Sent (SSE) melaksanakan teknologi menolak, dan data disiarkan kepada klien melalui sambungan terbuka yang berterusan, mengelakkan overhead berulang kali mewujudkan sambungan baru.
  • Tidak seperti WebSockets yang membolehkan komunikasi bidirectional, SSE hanya membenarkan pelayan untuk menolak mesej kepada pelanggan. Walau bagaimanapun, SSE mempunyai kelebihan tertentu, seperti sokongan untuk jenis mesej tersuai dan penyambungan semula automatik dan pemotongan.
  • Pelanggan boleh mengendalikan pelbagai jenis acara dalam aliran acara dengan melaksanakan acara bernama. Di samping itu, pengendali acara
  • Eventsource boleh digunakan untuk mengendalikan kesilapan, dan pelanggan boleh menamatkan sambungan Eventsource pada bila -bila masa dengan memanggil kaedah onerror. close()

Perbandingan dengan WebSockets

Ramai orang benar -benar tidak menyedari kewujudan SSE, kerana mereka sering dikaburkan oleh API WebSockets yang lebih kuat. Walaupun WebSockets membolehkan komunikasi dua hala penuh antara klien dan pelayan, SSE hanya membolehkan pelayan menolak mesej kepada klien. Aplikasi yang memerlukan prestasi hampir-masa atau komunikasi dua hala mungkin lebih sesuai untuk websocket. Walau bagaimanapun, SSE juga mempunyai beberapa kelebihan ke atas WebSockets. Sebagai contoh, SSE menyokong jenis mesej tersuai dan pemotongan penyambungan semula automatik. Ciri -ciri ini boleh dilaksanakan di WebSockets, tetapi ia boleh didapati secara lalai dalam SSE. Aplikasi WebSockets juga memerlukan pelayan yang menyokong protokol WebSockets. Sebaliknya, SSE dibina di atas HTTP dan boleh dilaksanakan dalam pelayan web standard.

Sokongan pengesanan

SSE agak tinggi sokongan, dan Internet Explorer adalah satu -satunya pelayar utama yang tidak menyokong mereka lagi. Walau bagaimanapun, selagi IE ketinggalan, pengesanan fungsi masih diperlukan. Mengenai pelanggan, SSE menggunakan objek Eventsource untuk melaksanakan -harta objek global. Fungsi berikut mengesan sama ada pembina Eventsource boleh didapati dalam penyemak imbas. Jika fungsi kembali benar, SSE boleh digunakan. Jika tidak, mekanisme sandaran seperti pengundian harus digunakan.

function supportsSSE() {
  return !!window.EventSource;
}

Sambungan

Untuk menyambung ke aliran acara, hubungi pembina Eventsource seperti yang ditunjukkan di bawah. Anda mesti menentukan URL aliran acara untuk melanggan. Pembina secara automatik akan bertanggungjawab untuk membuka sambungan.

EventSource(url);

pengendali acara onopen

Selepas mewujudkan sambungan, pengendali acara

eventsource akan dipanggil. Pengendali acara membuka acara sebagai satu -satunya parameter. Contoh berikut menunjukkan pengendali acara onopen biasa. onopen

Pengendali acara
source.onopen = function(event) {
  // 處理打開事件
};
Eventsource juga boleh ditulis menggunakan kaedah

. Sintaks alternatif ini lebih baik daripada addEventListener() kerana ia membolehkan beberapa pengendali dilampirkan pada peristiwa yang sama. Penggunaan berikut onopen untuk menulis semula pengendali acara addEventListener() sebelumnya. onopen

source.addEventListener("open", function(event) {
  // 處理打開事件
}, false);

Terima mesej

Pelanggan menafsirkan aliran acara sebagai satu siri acara mesej DOM. Setiap acara yang diterima dari pelayan mencetuskan pengendali acara onmessage untuk Eventsource. onmessage Pengendali mengambil acara mesej sebagai satu -satunya parameter. Contoh berikut mencipta pengendali acara onmessage.

function supportsSSE() {
  return !!window.EventSource;
}

peristiwa mesej mengandungi tiga sifat penting - data, asal, dan lastEventId. Seperti namanya, data mengandungi data mesej sebenar (format rentetan). Data boleh menjadi rentetan JSON dan boleh diserahkan kepada kaedah JSON.Parse (). Harta asal mengandungi URL akhir aliran acara selepas sebarang pengalihan. Asal harus diperiksa untuk mengesahkan bahawa mesej diterima hanya dari sumber yang diharapkan. Akhirnya, harta LastEventID mengandungi pengenal mesej terakhir yang dilihat dalam aliran acara. Pelayan boleh menggunakan harta ini untuk menambah pengenal kepada mesej individu. Sekiranya tiada pengenal telah dilihat, LastEventID akan menjadi rentetan kosong. Pengendali acara onmessage juga boleh ditulis menggunakan kaedah addEventListener(). Contoh berikut menunjukkan pengendali acara addEventListener() yang ditulis semula menggunakan onmessage.

EventSource(url);

Naming Event

Dengan melaksanakan Nama Acara , satu aliran acara boleh menentukan pelbagai jenis peristiwa. Acara bernama tidak dikendalikan oleh pengendali acara mesej. Sebaliknya, setiap jenis acara penamaan dikendalikan oleh pengendali uniknya sendiri. Sebagai contoh, jika aliran acara mengandungi acara bernama Foo, pengendali acara berikut diperlukan. Perhatikan bahawa pengendali acara Foo adalah sama dengan pengendali acara mesej, kecuali jenis acara berbeza. Sudah tentu, apa -apa jenis mesej bernama lain memerlukan pengendali acara yang berasingan.

source.onopen = function(event) {
  // 處理打開事件
};

Ralat pemprosesan

Jika terdapat masalah dengan aliran acara, pengendali acara onerror untuk Eventsource akan dicetuskan. Penyebab kesilapan yang sama adalah gangguan sambungan. Walaupun objek Eventsource secara automatik cuba menyambung semula ke pelayan, peristiwa ralat juga akan dicetuskan apabila sambungan diputuskan. Contoh berikut menunjukkan pengendali acara onerror.

source.addEventListener("open", function(event) {
  // 處理打開事件
}, false);

Sudah tentu, pengendali acara onerror juga boleh ditulis semula menggunakan addEventListener() seperti yang ditunjukkan di bawah.

source.onmessage = function(event) {
  var data = event.data;
  var origin = event.origin;
  var lastEventId = event.lastEventId;
  // 處理消息
};

Putuskan sambungan

Pelanggan boleh menamatkan sambungan Eventsource pada bila -bila masa dengan memanggil kaedah close(). Sintaks close() ditunjukkan di bawah. Kaedah close() tidak menerima sebarang parameter dan tidak mengembalikan sebarang nilai.

source.addEventListener("message", function(event) {
  var data = event.data;
  var origin = event.origin;
  var lastEventId = event.lastEventId;
  // 處理消息
}, false);

Status sambungan

Status sambungan Eventsource disimpan dalam harta ReadyState. Pada bila -bila masa dalam kitaran hayatnya, sambungan boleh berada di salah satu daripada tiga negeri yang mungkin, dan di luar. Senarai berikut menerangkan setiap negeri.

  • Sambungan - Apabila objek Eventsource dibuat, ia pada mulanya akan memasuki keadaan sambungan. Dalam tempoh ini, sambungan belum ditubuhkan. Sekiranya sambungan yang ditetapkan hilang, Eventsource juga akan beralih ke keadaan sambungan. Nilai ReadyState Eventsocket dalam sambungan adalah 0. Nilai ini ditakrifkan sebagai Eventsource.Connecting yang berterusan.
  • Buka - Sambungan yang ditetapkan dipanggil terbuka. Objek Eventsource yang terbuka dapat menerima data. Nilai siap sedia 1 sepadan dengan keadaan terbuka. Nilai ini ditakrifkan sebagai Eventsource.Open yang berterusan.
  • Tutup - Jika sambungan tidak ditubuhkan dan penyambungan semula tidak dicuba, Eventsource dipanggil ditutup. Keadaan ini biasanya dimasukkan dengan memanggil kaedah close(). Nilai Readystate dari Eventsource dalam keadaan tertutup ialah 2. Nilai ini ditakrifkan sebagai Eventsource.closed yang berterusan.

Contoh berikut menunjukkan cara menyemak sambungan Eventsource menggunakan harta ReadyState. Untuk mengelakkan nilai Readystate yang dikodkan keras, contoh ini menggunakan pemalar negeri.

function supportsSSE() {
  return !!window.EventSource;
}

Kesimpulan

Artikel ini memperkenalkan aspek klien SSE. Jika anda berminat untuk mempelajari lebih lanjut mengenai SSE, saya cadangkan anda membaca SSE Server. Saya juga menulis artikel yang lebih praktikal mengenai SSE di Node.js. Nikmati!

soalan yang sering ditanya mengenai penggunaan SSE untuk melaksanakan teknologi push (FAQ)

Apakah prasyarat untuk melaksanakan SSE?

Untuk melaksanakan SSE, anda memerlukan pemahaman asas JavaScript dan Node.js. Anda juga harus akrab dengan konsep HTTP dan bagaimana ia berfungsi. Selain itu, pemahaman pengaturcaraan yang didorong oleh peristiwa mungkin bermanfaat kerana SSE didasarkan pada konsep ini.

Bagaimana SSE berbeza dari WebSockets?

Walaupun kedua-dua SSE dan WebSockets menyediakan kemas kini data masa nyata, keupayaan dan kes penggunaannya berbeza-beza. WebSockets menyediakan saluran komunikasi dua hala antara klien dan pelayan, yang membolehkan kedua-dua pihak menghantar data pada bila-bila masa. Sebaliknya, SSE adalah saluran komunikasi sehala di mana hanya pelayan boleh menolak kemas kini kepada pelanggan. Ini menjadikan SSE lebih sesuai untuk aplikasi di mana kemas kini data dimulakan oleh pelayan.

Bolehkah SSE digunakan dengan mana-mana bahasa sisi pelayan?

Ya, SSE boleh digunakan dengan mana-mana bahasa sisi pelayan yang dibolehkan HTTP. Ini termasuk bahasa seperti Node.js, Python, PHP, dan Ruby. Kuncinya adalah untuk menetapkan header HTTP yang betul dan format data mengikut spesifikasi SSE.

Bagaimana menangani kesilapan sambungan atau gangguan dalam SSE?

API Eventsource yang digunakan untuk melaksanakan SSE pada klien akan secara automatik cuba untuk menyambung semula ke pelayan apabila sambungan hilang. Anda juga boleh mendengar acara "Ralat" pada objek Eventsource untuk mengendalikan kesilapan atau gangguan sambungan secara manual.

Bolehkah saya menggunakan SSE untuk menghantar data dari klien ke pelayan?

Tidak, SSE dimaksudkan untuk komunikasi sehala dari pelayan ke klien. Jika anda perlu menghantar data dari klien ke pelayan, anda boleh menggunakan permintaan Ajax tradisional atau beralih ke teknologi komunikasi dua hala, seperti WebSockets.

Adakah SSE menyokong semua penyemak imbas?

Pelayar yang paling moden menyokong SSE. Walau bagaimanapun, Internet Explorer tidak menyokong SSE. Anda boleh menggunakan polyfills seperti Eventsource.js untuk menambah sokongan untuk SSE dalam pelayar yang tidak disokong.

Bagaimana untuk menutup sambungan SSE?

anda boleh menutup sambungan SSE dengan memanggil kaedah close() pada objek Eventsource. Ini akan menghalang pelayan daripada menghantar lebih banyak kemas kini kepada pelanggan.

Bolehkah saya menggunakan SSE untuk aplikasi masa nyata berbilang pengguna?

Ya, anda boleh menggunakan SSE untuk aplikasi masa nyata berbilang pengguna. Walau bagaimanapun, ingat bahawa setiap pengguna membuka sambungan berasingan ke pelayan. Jika anda mempunyai sejumlah besar pengguna, ini boleh menyebabkan beban pelayan yang berlebihan.

Bagaimana menggunakan SSE untuk menghantar pelbagai jenis acara?

Anda boleh menghantar pelbagai jenis acara dengan memasukkan medan "Acara" dalam data yang dihantar dari pelayan. Pelanggan kemudian boleh mendengar jenis acara khusus ini menggunakan kaedah addEventListener() pada objek Eventsource.

Bolehkah saya menggunakan SSE dengan API REST?

Ya, anda boleh menggunakan SSE dengan API REST. Pelayan boleh menghantar kemas kini kepada pelanggan apabila sumber berubah. Ini berguna untuk mengekalkan keadaan pelanggan dan pelayan yang disegerakkan tanpa mengundi.

Atas ialah kandungan terperinci Melaksanakan teknologi push menggunakan acara yang dilanda pelayan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1488
72
Bagaimana membuat permintaan HTTP di node.js? Bagaimana membuat permintaan HTTP di node.js? Jul 13, 2025 am 02:18 AM

Terdapat tiga cara biasa untuk memulakan permintaan HTTP dalam node.js: Gunakan modul terbina dalam, axios, dan nod-fetch. 1. Gunakan modul HTTP/HTTPS terbina dalam tanpa kebergantungan, yang sesuai untuk senario asas, tetapi memerlukan pemprosesan manual jahitan data dan pemantauan ralat, seperti menggunakan https.get () untuk mendapatkan data atau menghantar permintaan pos melalui .write (); 2.AXIOS adalah perpustakaan pihak ketiga berdasarkan janji. Ia mempunyai sintaks ringkas dan fungsi yang kuat, menyokong async/menunggu, penukaran JSON automatik, pemintas, dan lain -lain. Adalah disyorkan untuk memudahkan operasi permintaan tak segerak; 3.Node-Fetch menyediakan gaya yang serupa dengan pengambilan penyemak imbas, berdasarkan janji dan sintaks mudah

Jenis Data JavaScript: Rujukan primitif vs Jenis Data JavaScript: Rujukan primitif vs Jul 13, 2025 am 02:43 AM

Jenis data JavaScript dibahagikan kepada jenis primitif dan jenis rujukan. Jenis primitif termasuk rentetan, nombor, boolean, null, undefined, dan simbol. Nilai -nilai tidak berubah dan salinan disalin apabila memberikan nilai, jadi mereka tidak mempengaruhi satu sama lain; Jenis rujukan seperti objek, tatasusunan dan fungsi menyimpan alamat memori, dan pembolehubah menunjuk objek yang sama akan mempengaruhi satu sama lain. Typeof dan Instanceof boleh digunakan untuk menentukan jenis, tetapi memberi perhatian kepada isu -isu sejarah TypeOfNull. Memahami kedua -dua jenis perbezaan ini dapat membantu menulis kod yang lebih stabil dan boleh dipercayai.

Objek Masa JavaScript, seseorang membina eactexe, laman web lebih cepat di Google Chrome, dll. Objek Masa JavaScript, seseorang membina eactexe, laman web lebih cepat di Google Chrome, dll. Jul 08, 2025 pm 02:27 PM

Helo, pemaju JavaScript! Selamat datang ke berita JavaScript minggu ini! Minggu ini kami akan memberi tumpuan kepada: Pertikaian tanda dagangan Oracle dengan Deno, objek masa JavaScript baru disokong oleh pelayar, kemas kini Google Chrome, dan beberapa alat pemaju yang kuat. Mari mulakan! Pertikaian tanda dagangan Oracle dengan percubaan Deno Oracle untuk mendaftarkan tanda dagangan "JavaScript" telah menyebabkan kontroversi. Ryan Dahl, pencipta Node.js dan Deno, telah memfailkan petisyen untuk membatalkan tanda dagangan, dan dia percaya bahawa JavaScript adalah standard terbuka dan tidak boleh digunakan oleh Oracle

Apakah API cache dan bagaimana ia digunakan dengan pekerja perkhidmatan? Apakah API cache dan bagaimana ia digunakan dengan pekerja perkhidmatan? Jul 08, 2025 am 02:43 AM

CACHEAPI adalah alat yang disediakan oleh penyemak imbas kepada permintaan rangkaian cache, yang sering digunakan bersempena dengan ServiceWorker untuk meningkatkan prestasi laman web dan pengalaman luar talian. 1. Ia membolehkan pemaju menyimpan sumber secara manual seperti skrip, helaian gaya, gambar, dan lain -lain; 2. Ia boleh memadankan tindak balas cache mengikut permintaan; 3. Ia menyokong memotong cache tertentu atau membersihkan seluruh cache; 4. Ia boleh melaksanakan keutamaan cache atau strategi keutamaan rangkaian melalui perkhidmatan pekerja yang mendengar acara mengambil; 5. Ia sering digunakan untuk sokongan luar talian, mempercepat kelajuan akses berulang, sumber utama dan kandungan kemas kini latar belakang; 6. Apabila menggunakannya, anda perlu memberi perhatian kepada kawalan versi cache, sekatan penyimpanan dan perbezaan dari mekanisme caching HTTP.

Mengendalikan Janji: Chaining, Pengendalian Kesalahan, dan Janji Gabungan di JavaScript Mengendalikan Janji: Chaining, Pengendalian Kesalahan, dan Janji Gabungan di JavaScript Jul 08, 2025 am 02:40 AM

Janji adalah mekanisme teras untuk mengendalikan operasi tak segerak dalam JavaScript. Memahami panggilan rantaian, pengendalian ralat dan gabungan adalah kunci untuk menguasai aplikasi mereka. 1. Panggilan rantai mengembalikan janji baru melalui .then () untuk merealisasikan persamaan proses tak segerak. Setiap .then () menerima hasil sebelumnya dan boleh mengembalikan nilai atau janji; 2. Pengendalian ralat harus menggunakan .catch () untuk menangkap pengecualian untuk mengelakkan kegagalan senyap, dan boleh mengembalikan nilai lalai dalam tangkapan untuk meneruskan proses; 3. Gabungan seperti janji.all () (berjaya hanya berjaya selepas semua kejayaan), janji.race () (penyempurnaan pertama dikembalikan) dan janji.allsettled () (menunggu semua penyelesaian)

Memanfaatkan array.prototype Kaedah untuk manipulasi data dalam javascript Memanfaatkan array.prototype Kaedah untuk manipulasi data dalam javascript Jul 06, 2025 am 02:36 AM

Kaedah terbina dalam JavaScript seperti .map (), .filter () dan .reduce () dapat memudahkan pemprosesan data; 1) .map () digunakan untuk menukar elemen satu hingga satu untuk menghasilkan tatasusunan baru; 2) .filter () digunakan untuk menapis elemen mengikut keadaan; 3) .reduce () digunakan untuk mengagregatkan data sebagai nilai tunggal; Penyalahgunaan harus dielakkan apabila digunakan, mengakibatkan kesan sampingan atau masalah prestasi.

JS Roundup: menyelam jauh ke dalam gelung acara JavaScript JS Roundup: menyelam jauh ke dalam gelung acara JavaScript Jul 08, 2025 am 02:24 AM

Gelung acara JavaScript menguruskan operasi tak segerak dengan menyelaraskan susunan panggilan, webapis, dan barisan tugas. 1. Stack panggilan melaksanakan kod segerak, dan ketika menghadapi tugas -tugas yang tidak segerak, ia diserahkan kepada Webapi untuk diproses; 2. Selepas Webapi melengkapkan tugas di latar belakang, ia meletakkan panggil balik ke dalam barisan yang sama (tugas makro atau tugas mikro); 3. Loop acara memeriksa sama ada timbunan panggilan kosong. Jika ia kosong, panggilan balik diambil dari barisan dan ditolak ke dalam tumpukan panggilan untuk pelaksanaan; 4. Tugas -tugas mikro (seperti janji. 5. Memahami gelung acara membantu mengelakkan menyekat benang utama dan mengoptimumkan pesanan pelaksanaan kod.

Memahami acara menggelegak dan menangkap dalam acara DOM JavaScript Memahami acara menggelegak dan menangkap dalam acara DOM JavaScript Jul 08, 2025 am 02:36 AM

Gelembung peristiwa menyebarkan dari elemen sasaran ke luar ke nod nenek moyang, sementara penangkapan peristiwa menyebarkan dari lapisan luar ke dalam ke elemen sasaran. 1. Bubbles Acara: Selepas mengklik elemen kanak -kanak, acara itu mencetuskan pendengar elemen induk ke atas. Sebagai contoh, selepas mengklik butang, ia mengeluarkan anak -anak terlebih dahulu, dan kemudian ParentClicked. 2. Tangkap Acara: Tetapkan parameter ketiga menjadi benar, supaya pendengar dilaksanakan di peringkat penangkapan, seperti mencetuskan pendengar penangkapan elemen induk sebelum mengklik butang. 3. Penggunaan praktikal termasuk pengurusan bersatu peristiwa elemen kanak -kanak, pemprosesan pemintasan dan pengoptimuman prestasi. 4. Aliran acara DOM dibahagikan kepada tiga peringkat: menangkap, sasaran dan gelembung, dan pendengar lalai dilaksanakan di peringkat gelembung.

See all articles