Rumah > rangka kerja php > Laravel > teks badan

Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata

青灯夜游
Lepaskan: 2022-02-11 19:40:55
ke hadapan
3424 orang telah melayarinya

Lajur tutorial Laravel berikut akan memperkenalkan kepada anda cara menggunakan Laravel-echo-server untuk membina aplikasi masa nyata, saya harap ia akan membantu anda.

Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata

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:

  • Rangka kerja Laravel (tutorial ini menggunakan versi 5.6)
  • Perkhidmatan Redis
  • Pengetahuan Asas Laravel

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
Salin selepas log masuk

Selepas pemasangan selesai, buka aplikasi Laravel anda atau mulakan projek ujian baharu:

 $ composer create-project --prefer-dist laravel/laravel echo-test
Salin selepas log masuk

Seterusnya, pasang Predis untuk aplikasi kami:

 $ composer require predis/predis
Salin selepas log masuk

Selepas pemasangan selesai, tukar ke direktori akar projek dan mulakan perkhidmatan Soket:

 $ laravel-echo-server init
Salin selepas log masuk

Selepas melaksanakan arahan ini, anda akan diminta untuk mendapatkan beberapa maklumat konfigurasi tentang perkhidmatan Soket konfigurasikannya mengikut situasi anda sendiri Isikan:

Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata

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
Salin selepas log masuk

Output akan kelihatan seperti ini:

Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata

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
Salin selepas log masuk

(Anda mungkin perlu menjalankan Untuk memasang Laravel dan kebergantungan yang berkaitan) npm install

Seterusnya buka fail

, atau fail JS anda sendiri yang memperkenalkan semua kod asas JS. resources/assets/js/bootstrap.js

Sekarang kami akan menambah kod untuk memulakan perkhidmatan asas Echo:

import Echo from 'laravel-echo'

window.io = require('socket.io-client');
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
});
Salin selepas log masuk
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);
    });
Salin selepas log masuk
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 ExampleEvent
Salin selepas log masuk
Ini 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.

broadcastOnSekarang mari cuba! Buka fail

anda dan tambahkan laluan ujian:
public function broadcastOn()
{
    return new Channel('test-event');
}
Salin selepas log masuk
Route::get('test-broadcast', function(){
    broadcast(new \App\Events\ExampleEvent);
});
Salin selepas log masuk

(有很多种方式来广播 ExampleEvent  类 ,在这个示例中我使用 Laravel 提供的 broadcast() 助手,在我看来这是最简洁的方式)

启动队列监听:

$ php artisan queue:listen --tries=1
Salin selepas log masuk

浏览器打开一个包含 JS 文件的页面(可以是 Laravel 默认的欢迎页面),这是第一个页面,请不要关闭次页面,我们已经在此页面上订阅了 Socket 服务。

接下来打开另一个页面访问  /test-broadcast ,这将会返回一个空白页面,但是它将会通过你的 ExampleEvent  类广播到你的 Socket 服务上。返回到我们的第一个页面,打开浏览器控制台,应该可以看到类似信息:

Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata

正如你所看到的,数据通过这种形式展示在我们的客户端。你能输入任意数据通过你的  ExampleEvent 类来广播他们,这些数据可以是新闻更新,页面更新,总浏览量或者更多。

因为我们有在 laravel-echo-server 配置中有设置开发者模式,所以你能看到 Socket 服务上的所有基本信息:

Penjelasan terperinci tentang cara Laravel-echo-server membina aplikasi masa nyata

现在你已经安装并运行了一个基本的 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
Salin selepas log masuk

安装了 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!

Label berkaitan:
sumber:learnku.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan