Hari ini, kita akan meneroka konsep penyiaran dalam kerangka web Laravel. Ia membolehkan anda menghantar pemberitahuan ke sisi klien apabila sesuatu berlaku di sisi pelayan. Dalam artikel ini, kami akan menggunakan perpustakaan pusher pihak ketiga untuk menghantar pemberitahuan ke sisi klien. Sekarang, apabila Pengguna A menghantar mesej kepada Pengguna B, anda ingin memberitahu Pengguna B dalam masa nyata. Anda boleh memaparkan popup atau kotak amaran yang memberitahu pengguna B tentang mesej baru!
Ini adalah kes penggunaan yang sempurna untuk berjalan melalui konsep penyiaran di Laravel, dan itulah yang akan kami laksanakan dalam artikel ini. Mari kita fahami aliran asas soket sebelum kita menyelam lebih mendalam ke dalam pelaksanaan sebenar. Kami lebih suka yang terakhir dalam artikel ini. Untuk. Anda akan mendapat hang itu semasa kami bergerak melalui artikel ini. Log
penyesuai. Sudah tentu, jika anda menggunakan penyesuaipenolak sebagai pemacu siaran lalai kami. Oleh itu, mari kita ubah fail migrasi
pangkalan data/migrasi/xxxx_xx_xx_xxxxxx_create_messages_table.php<?php<br><br>return [<br><br> /*<br> |--------------------------------------------------------------------------<br> | Default Broadcaster<br> |--------------------------------------------------------------------------<br> |<br> | This option controls the default broadcaster that will be used by the<br> | framework when an event needs to be broadcast. You may set this to<br> | any of the connections defined in the "connections" array below.<br> |<br> | Supported: "pusher", "redis", "log", "null"<br> |<br> */<br><br> 'default' => env('BROADCAST_DRIVER', 'null'),<br><br> /*<br> |--------------------------------------------------------------------------<br> | Broadcast Connections<br> |--------------------------------------------------------------------------<br> |<br> | Here you may define all of the broadcast connections that will be used<br> | to broadcast events to other systems or over websockets. Samples of<br> | each available type of connection are provided inside this array.<br> |<br> */<br><br> 'connections' => [<br><br> 'pusher' => [<br> 'driver' => 'pusher',<br> 'key' => env('PUSHER_APP_KEY'),<br> 'secret' => env('PUSHER_APP_SECRET'),<br> 'app_id' => env('PUSHER_APP_ID'),<br> 'options' => [<br> 'cluster' => env('PUSHER_APP_CLUSTER'),<br> 'useTLS' => true,<br> ],<br> ],<br><br> 'redis' => [<br> 'driver' => 'redis',<br> 'connection' => 'default',<br> ],<br><br> 'log' => [<br> 'driver' => 'log',<br> ],<br><br> 'null' => [<br> 'driver' => 'null',<br> ],<br><br> ],<br><br>];<br>
Buat Kelas Acara
Setiap kali anda ingin menaikkan acara tersuai di Laravel, anda harus membuat kelas untuk acara itu. Berdasarkan jenis peristiwa, Laravel bertindak balas dengan sewajarnya dan mengambil tindakan yang diperlukan. Sebaliknya, jika acara itu adalah jenis penyiaran, Laravel menghantar acara itu ke pelayan web-socket yang dikonfigurasi dalam fail config/breadcasting.php
. lain-lain maklumat berkaitan pusher yang diperlukan. Seperti yang telah dibincangkan sebelum ini, pelanggan mesti mengesahkan dirinya sebelum melanggan saluran persendirian. Oleh itu, objek melakukan pengesahan yang diperlukan dengan menghantar XHR di latar belakang dengan parameter yang diperlukan. Akhirnya, Laravel cuba mencari user. {User_id} <strong> route, dan ia sepadan dengan laluan yang telah kami tentukan dalam </strong> laluan/channels.php
Jadi persediaan untuk menerima acara dari pelayan web-sockets. Seterusnya, kami akan melalui kaedah
dalam fail pengawal yang menimbulkan acara penyiaran. Oleh itu, kami telah cuba meniru tingkah laku itu dalam kaedah . Oleh kerana NewMessAgenotification
hendaklahbroadcastnow <ship> type, Laravel memuatkan konfigurasi siaran lalai dari fail <p> config/breadcasting.php <code>private
. Akhirnya, ia menyiarkan acara NewMessAgenotification <code>user.{USER_ID}
ke pelayan web-socket yang dikonfigurasikan pada pengguna . {User_id} <code>Echo
Dalam kes kami, acara itu akan disiarkan ke pelayan web-socket Pusher pada saluran user.{USER_ID}
. Sekiranya ID pengguna penerima adalah 1
, acara itu akan disiarkan melalui saluran user.1
. Kami telah membina setakat ini.
Buka URL https: // your-laravel-site-domain/message/index dalam penyemak imbas anda. Jika anda belum log masuk, anda akan diarahkan ke skrin log masuk. Sebaik sahaja anda log masuk, anda harus melihat pandangan siaran yang kami tentukan sebelum ini -tidak ada yang mewah lagi. Memandangkan kami telah mengaktifkan tetapan
yang disediakan oleh perpustakaan klien Pusher, ia log segala -galanya dalam konsol penyemak imbas untuk tujuan debugging. Mari kita lihat apa yang sedang dilog masuk ke konsol apabila anda mengakses http: // halaman-laravel-site-domain/mesej/indeks. Sudah tentu, anda boleh mempunyai nama saluran yang berbeza dalam kes anda berdasarkan ID pengguna yang anda log masuk. Sekarang, mari kita buka halaman ini ketika kita bergerak untuk menguji kaedah. Sekiranya anda akan menggunakan penyemak imbas yang berbeza, anda perlu log masuk untuk dapat mengakses halaman itu. Berlaku. Pergi ke akaun pusher anda dan navigasi ke permohonan anda. Di bawah
debugkonsol
, anda harus dapat melihat mesej yang dilog masuk. Mudah -mudahan, ia tidak terlalu banyak dalam satu perjalanan kerana saya telah cuba mempermudahkan perkara dengan pengetahuan saya yang terbaik.
Kesimpulan
Hari ini, kami melalui salah satu ciri -ciri yang dibincangkan dari Laravel -castcasting. Ia membolehkan anda menghantar pemberitahuan masa nyata menggunakan soket web. Sepanjang artikel ini, kami membina contoh dunia nyata yang menunjukkan konsep yang disebutkan di atas.
Atas ialah kandungan terperinci Bagaimana Penyiaran Laravel Berfungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

TOVERSIONAPHP-berasaskan-berasaskan, UseUrl-berasaskan Forversioningforclarityandeaseofrouting, separateVersionedcodetoavoidconflicts, decrecateoldversionswithclearCommunication, andconsidercustomheadershipshenershipshenershipshenershipshenershinlyhenershinlywenershinly

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Proseduralandobject-orientedprogramming (OOP) inphpdiffers significelyinstructure, kebolehgunaan semula, dandatahandling.1.ProceduralProgrammingusesFunctionsaganediediedieds, sesuai, pemodelan

PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.
