Rumah > Artikel > rangka kerja php > Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata
Lajur tutorial Laravel berikut akan memperkenalkan kepada anda cara menggunakan Laravel-echo-server untuk membina aplikasi masa nyata, saya harap ia akan membantu anda.
Pada pendapat saya, komunikasi masa nyata ialah masa depan aplikasi APP. Perkhidmatan soket biasanya tidak mudah untuk dilaksanakan, tetapi perkhidmatan Laravel Echo mengubah keadaan ini.
Dalam artikel ini, saya akan memperkenalkan secara ringkas cara membuat perkhidmatan Soket yang sedang berjalan dan acara penyiaran pada perkhidmatan ini. (https://github.com/tlaverdure/laravel-echo-server, dokumentasi sokongan Laravel: https://learnku.com/docs/laravel/5.6/broadcasting#driver-prerequisites)
It is It's percuma sepenuhnya, anda hanya perlu menjalankan perkhidmatan Soket anda sendiri. Anda juga boleh menggunakan Pusher bersepadu lalai Laravel Satu-satunya kelemahan ialah ia terhad dan anda perlu membayar jika anda melebihi had. Saya lebih suka menstruktur perkara ini sendiri.
Keperluan:
Memasang laravel-echo-server
Mula-mula kita perlu memasang laravel-echo-server secara global , anda hanya perlu memasukkan arahan berikut di terminal.
$ npm install -g laravel-echo-server
Selepas pemasangan selesai, buka aplikasi Laravel anda atau mulakan projek ujian baharu:
$ composer create-project --prefer-dist laravel/laravel echo-test
Seterusnya, pasang Predis untuk aplikasi kami:
$ composer require predis/predis
Selepas pemasangan selesai, tukar ke direktori akar projek dan mulakan perkhidmatan Soket:
$ laravel-echo-server init
Selepas melaksanakan arahan ini, anda akan diminta untuk mendapatkan beberapa maklumat konfigurasi tentang perkhidmatan Soket konfigurasikannya mengikut situasi anda sendiri Isikan:
Ingat bahawa dalam persekitaran pengeluaran, setiap kali anda menggunakannya, anda harus mematikan mod pembangun anda.
Kita boleh cuba memulakan perkhidmatan dan melihat sama ada ia berjalan dengan betul:
$ laravel-echo-server start
Output akan kelihatan seperti ini:
Konfigurasikan Laravel untuk menjadikan Laravel Echo Server berfungsi dengan betul
Buka fail config/app.php
anda dan nyahkomen BroadcastServiceProvider
dalam tatasusunan Penyedia:
AppProvidersBroadcastServiceProvider::class,
Pembekal ini akan memulakan penghalaan siaran (anda mungkin pernah melihatnya dalam fail routes/channels.php
)
Buka .env
fail, ubah suai nilai BROADCAST_DRIVER
kepada nilai yang anda takrifkan apabila laravel-echo-server dimulakan (Redis atau Log). Dalam tutorial ini kami akan menggunakan pemacu Redis.
Juga ubah suai QUEUE_DRIVER
kepada mana-mana pemandu baris gilir yang anda suka, dalam contoh ini anda boleh menukarnya dengan mudah kepada pemacu Redis kerana anda sudah memasang dan menjalankannya.
Seterusnya kita perlu memasang klien Socket.io dan pakej Laravel-Echo, anda boleh melakukan ini dengan melakukan perkara berikut:
$ npm install --save socket.io-client $ npm install --save laravel-echo
(Anda mungkin perlu menjalankan Untuk memasang Laravel dan kebergantungan yang berkaitan) npm install
, atau fail JS anda sendiri yang memperkenalkan semua kod asas JS. resources/assets/js/bootstrap.js
import Echo from 'laravel-echo' window.io = require('socket.io-client'); window.Echo = new Echo({ broadcaster: 'socket.io', host: window.location.hostname + ':6001' });Kini kami bersedia untuk mendengar mesej di saluran! Saya akan menerangkan cara membuka saluran dalam tutorial ini, dan mari kita mula mendengar saluran pertama kami:
window.Echo.channel('test-event') .listen('ExampleEvent', (e) => { console.log(e); });Kami memberitahu program melalui kod JS bahawa kami melanggan saluran bernama 'test-event' , Dan dengar acara 'ExampleEvent' (ini ialah nama kelas acara, anda juga boleh menyesuaikannya mengikut keperluan anda). Mari buat kelas acara ini:
$ php artisan make:event ExampleEventIni akan membuat kelas acara yang dipanggil
di bawah direktori App/Events
Mari kita berikan kelas acara ini sedikit Untuk dibuat pelarasan supaya ia boleh berjalan seperti biasa dalam perkhidmatan Socket kami, mula-mula pastikan kelas acara anda mewarisi daripada antara muka ExampleEvent.php
, seperti berikut; 🎜>Seterusnya tatal ke bawah untuk mencari fungsi
dan ubah suainya supaya kita boleh menyiarkan pada saluran yang betul: ShouldBroadcast
Mari buat fungsi baharu di bawah supaya kita boleh Beberapa contoh data:Fungsi ini dipanggil apabila acara dipanggil, dan ia akan mengembalikan data ke perkhidmatan Soket anda.
broadcastOn
Sekarang mari cuba! Buka fail
public function broadcastOn() { return new Channel('test-event'); }
Route::get('test-broadcast', function(){ broadcast(new \App\Events\ExampleEvent); });
(有很多种方式来广播 ExampleEvent
类 ,在这个示例中我使用 Laravel 提供的 broadcast()
助手,在我看来这是最简洁的方式)
启动队列监听:
$ php artisan queue:listen --tries=1
浏览器打开一个包含 JS 文件的页面(可以是 Laravel 默认的欢迎页面),这是第一个页面,请不要关闭次页面,我们已经在此页面上订阅了 Socket 服务。
接下来打开另一个页面访问 /test-broadcast
,这将会返回一个空白页面,但是它将会通过你的 ExampleEvent
类广播到你的 Socket 服务上。返回到我们的第一个页面,打开浏览器控制台,应该可以看到类似信息:
正如你所看到的,数据通过这种形式展示在我们的客户端。你能输入任意数据通过你的 ExampleEvent
类来广播他们,这些数据可以是新闻更新,页面更新,总浏览量或者更多。
因为我们有在 laravel-echo-server 配置中有设置开发者模式,所以你能看到 Socket 服务上的所有基本信息:
现在你已经安装并运行了一个基本的 Socket 服务!但这并不是全部,你可以根据这个来做更多的事情,比如为单个用户提供认证的私有渠道。(当您想广播订单更新或私人消息时)
要做到这一点,我建议你去查看 Laravel 文档了解更多相关的内容。通过这个主题你能做很多事情,让你的应用程序变得更加神奇。你可以在这里找到相应的文档:
Broadcasting - Laravel - The PHP framework for web artisans.laravel.com
其他: 在生产环境中运行
正如我之前所说,你必须在 laravel-echo-server.json
配置文件中禁用开发者模式。 当然在服务器上你可以忽略这个文件,重新初始化它,因为你的主机可能和本地不同。
你还需要保持你的 Socket 服务在你的生产环境中运行,你可以用 Supervisor ,但是我通常使用 PM2 ,它可以方便快速的管理你的服务。 (http://pm2.keymetrics.io/)
这里是我使用 PM2 的 Socket.sh 基本配置:
#!/usr/bin/env bash laravel-echo-server start
安装了 PM2 后, 你可以通过 pm2 start socket.sh
命令来启动脚本,运行你的 Socket 服务。
我希望它能够帮助到你。 这篇文章主要介绍的是一些基础知识,接下来我们会继续讨论广播路由的授权和不同的广播频道。
感谢你的阅读!
英文原文地址:https://medium.com/@dennissmink/laravel-echo-server-how-to-24d5778ece8b
译文地址:https://learnku.com/laravel/t/13101/using-laravel-echo-server-to-build-real-time-applications
更多编程相关知识,请访问:编程视频!!
Atas ialah kandungan terperinci Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!