Inhaltsverzeichnis
Broadcast-Dienstanbieter
设置 Redis 连接
建立 Event
设置 api 路由
安装前端脚手架
Redis
安装 laravel-echo-server 订阅 Redis Sub
初始化 laravel-echo-server
启动 laravel-echo-server
测试广播
安装 laravel-echo 的前依赖
Sie müssen den Broadcast-Treiber in der Datei .env ändern redis: " >Redis-Verbindung einrichten

Sie müssen den Broadcast-Treiber in der Datei .env ändern redis:

npm install && npm run watch
Nach dem Login kopieren
Nach dem Login kopieren

Front-End-Gerüst installieren🎜🎜🎜rrreee🎜🎜

Redis🎜🎜Da wir Redis Broadcast verwenden, müssen wir Predis installieren Bibliothek: 🎜🎜🎜rrreee🎜🎜
🎜Redis Broadcast verwendet die Redis Pub/Sub-Funktion zum Senden; Sie müssen es jedoch mit einem Websocket-Server koppeln, der Redis-Nachrichten akzeptieren kann, um Nachrichten an den Websocket-Kanal zu senden🎜< /blockquote>
🎜Wenn Redis ein Ereignis sendet, wird das Ereignis auf dem angegebenen Kanal veröffentlicht. Die übergebenen Daten sind eine JSON-Formatzeichenfolge, die den Ereignisnamen, Nutzdaten und den Benutzer enthält, der die Ereignis-Socket-ID generiert hat 🎜

Installieren Sie laravel -echo-server. Abonnieren Sie Redis Sub🎜🎜Wenn Sie Pusher verwenden, verwenden Sie einfach Laravel. Wenn Sie 🎜Redis + socket.io🎜 verwenden, müssen Sie einen verwenden Open-Source-Projekt laravel-echo-server . Daher werden wir jetzt laravel-echo-server🎜🎜globale Installation🎜🎜🎜rrreee🎜🎜

verwenden, um Laravel zu initialisieren -echo- server🎜
🎜rrreee🎜🎜

Laravel-echo-server starten🎜🎜🎜rrreee🎜🎜
  • Das wird es Ausgabe nach erfolgreichem Start Das folgende Protokoll
rrreee

Testübertragung 🎜🎜Ausgeführt im Browserhttp://yourhost /api/ship ?id=16🎜🎜🎜rrreee🎜🎜
  • Laravel-Echo-Server-Verbindung erfolgreich!

Installieren Sie die Abhängigkeiten von laravel-echo 🎜🎜Da das Frontend laravel-echo Um Radio zu hören, haben wir als zugrunde liegende Implementierung socket.io ausgewählt. Also müssen wir zuerst laravel-echo und zu package.json class="sprache-plaintext highlighter-rouge">socket.ios Abhängigkeiten🎜🎜🎜rrreee🎜🎜🎜Bearbeiten Sie „resource/js/bootstrap.js“ und fügen Sie den folgenden Code hinzu🎜🎜🎜rrreee🎜🎜

测试页面" >API-Routing festlegen🎜
npm install && npm run watch
Nach dem Login kopieren
Nach dem Login kopieren

Front-End-Gerüst installieren🎜🎜🎜rrreee🎜🎜

Redis🎜🎜Da wir Redis Broadcast verwenden, müssen wir Predis installieren Bibliothek: 🎜🎜🎜rrreee🎜🎜
🎜Redis Broadcast verwendet die Redis Pub/Sub-Funktion zum Senden; Sie müssen es jedoch mit einem Websocket-Server koppeln, der Redis-Nachrichten akzeptieren kann, um Nachrichten an den Websocket-Kanal zu senden🎜< /blockquote>
🎜Wenn Redis ein Ereignis sendet, wird das Ereignis auf dem angegebenen Kanal veröffentlicht. Die übergebenen Daten sind eine JSON-Formatzeichenfolge, die den Ereignisnamen, Nutzdaten und den Benutzer enthält, der die Ereignis-Socket-ID generiert hat 🎜

Installieren Sie laravel -echo-server. Abonnieren Sie Redis Sub🎜🎜Wenn Sie Pusher verwenden, verwenden Sie einfach Laravel. Wenn Sie 🎜Redis + socket.io🎜 verwenden, müssen Sie einen verwenden Open-Source-Projekt laravel-echo-server . Daher werden wir jetzt laravel-echo-server🎜🎜globale Installation🎜🎜🎜rrreee🎜🎜

verwenden, um Laravel zu initialisieren -echo- server🎜
🎜rrreee🎜🎜

Laravel-echo-server starten🎜🎜🎜rrreee🎜🎜
  • Das wird es Ausgabe nach erfolgreichem Start Das folgende Protokoll
rrreee

Testübertragung 🎜🎜Ausgeführt im Browserhttp://yourhost /api/ship ?id=16🎜🎜🎜rrreee🎜🎜
  • Laravel-Echo-Server-Verbindung erfolgreich!

Installieren Sie die Abhängigkeiten von laravel-echo 🎜🎜Da das Frontend laravel-echo Um Radio zu hören, haben wir als zugrunde liegende Implementierung socket.io ausgewählt. Also müssen wir zuerst laravel-echo und zu package.json class="sprache-plaintext highlighter-rouge">socket.ios Abhängigkeiten🎜🎜🎜rrreee🎜🎜🎜Bearbeiten Sie „resource/js/bootstrap.js“ und fügen Sie den folgenden Code hinzu🎜🎜🎜rrreee🎜🎜

测试页面

基本构建

Heim PHP-Framework Laravel Lassen Sie uns über den Broadcast-Mechanismus von Laravel7.0 sprechen. Es gibt immer das, was Sie wollen!

Lassen Sie uns über den Broadcast-Mechanismus von Laravel7.0 sprechen. Es gibt immer das, was Sie wollen!

Jul 28, 2021 pm 03:57 PM
广播机制

laravel7.0-Broadcast-Mechanismus (Redis + socket.io)

Broadcast-Dienstanbieter

Bevor Sie ein Ereignis übertragen, müssen Sie zunächst AppProvidersBroadcastServiceProvider registrieren . In einer neu installierten Laravel-Anwendung müssen Sie lediglich die Konfigurationsdatei config/app deaktivieren. Die Anmerkungen vor den entsprechenden Dienstanbieterncode> array genügen. Mit diesem Anbieter können Sie Broadcast-Autorisierungsrouten und Rückrufe registrierenAppProvidersBroadcastServiceProvider。在新安装的 Laravel 应用中,你只需要取消 config/app.php 配置文件中 providers 数组内对应服务提供者之前的注释即可。该提供者允许你注册广播授权路由和回调

相关栏目教程推荐:《laravel教程

设置 Redis 连接

需要修改 .env 文件中的广播驱动为 redis

BROADCAST_DRIVER=redis
Nach dem Login kopieren

建立 Event

php artisan make:event OrderShipped
Nach dem Login kopieren

执行上诉命令之后 app 目录下会出现一个 Events 目录,在该目录下产生了广播事件类 OrderShipped.php。我们要对自动生成的 OrderShipped 类进行以下修改

  • 增加对 ShouldBroadcast 的实现

  • 修改 broadcastOn 方法,使用公共广播通道 orderStatus

  • 自定义广播的消息名(非必须)【默认情况下,Laravel 会使用事件的类名来广播事件,不过,你可以通过在事件中定义 broadcastAs 方法来自定义广播名称:】

  • 修改构造函数

完整修改如下 可直接替换

<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class OrderShipped implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    //可添加任意成员变量
    public $id;
    //事件构造函数
    public function __construct($id)
    {
        $this->id = $id;
    }
    //自定义广播的消息名
    public function broadcastAs()
    {
        return &#39;anyName&#39;;
    }
    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel(&#39;orderStatus&#39;);
    }
}
Nach dem Login kopieren

设置 api 路由

Route::get(&#39;/ship&#39;, function (Request $request) {
    $id = $request->input(&#39;id&#39;);
    broadcast(new OrderShipped($id)); // 触发事件
    return &#39;Order Shipped!&#39;;
});
Nach dem Login kopieren

安装前端脚手架

composer require laravel/uiphp artisan ui vue --auth
Nach dem Login kopieren

Redis

因为咱们使用 Redis 广播,需要安装 Predis 库:

composer require predis/predis
Nach dem Login kopieren

Redis 广播使用 Redis 的 pub/sub 功能进行广播;不过,你需要将其和能够接受 Redis 消息的 Websocket 服务器进行配对以便将消息广播到 Websocket 频道

当 Redis 广播发布事件时,事件将会被发布到指定的频道上,传递的数据是一个 JSON 格式的字符串,其中包含了事件名称、负载数据 data、以及生成事件 socket ID 的用户

安装 laravel-echo-server 订阅 Redis Sub

如果使用 pusher 那么直接使只用 laravel 就可以了,如果使用 Redis + socket.io 则需要使用开源项目 laravel-echo-server 。所以我们现在要使用 laravel-echo-server

全局安装

npm install -g laravel-echo-server
Nach dem Login kopieren

初始化 laravel-echo-server

laravel-echo-server init

// 是否在开发模式下运行此服务器(y/n) 输入y
? Do you want to run this server in development mode? (y/N)// 设置服务器的端口 默认 6001 输入 6001就可以了 或者你想要的
? Which port would you like to serve from? (6001)// 想用的数据库  选择 redis
? Which database would you like to use to store presence channel members? (Use arrow keys)❯ redis
  sqlite

//   这里输入 你的laravel  项目的访问域名
? Enter the host of your Laravel authentication server. (http://localhost)// 选择 网络协议 http
? Will you be serving on http or https? (Use arrow keys)❯ http
  https

// 您想为HTTP API生成客户端ID/密钥吗 N
? Do you want to generate a client ID/Key for HTTP API? (y/N)// 要设置对API的跨域访问吗?(y/n)N
Configuration file saved. Run laravel-echo-server start to run server.

//您希望将此配置另存为什么? (laravel-echo-server.json)回车就行
? What do you want this config to be saved as? (laravel-echo-server.json)
Nach dem Login kopieren

启动 laravel-echo-server

laravel-echo-server start
Nach dem Login kopieren
  • 成功启动后会输出以下日志
L A R A V E L  E C H O  S E R V E R

version 1.6.0

⚠ Starting server in DEV mode...

✔  Running at localhost on port 6001
✔  Channels are ready.
✔  Listening for http events...
✔  Listening for redis events...

Server ready!
Nach dem Login kopieren

测试广播

在浏览器上执行 http://yourhost/api/ship?id=16

Channel: laravel_database_orderStatus
Event: anyName
Nach dem Login kopieren
  • laravel-echo-server 连接成功!

安装 laravel-echo 的前依赖

由于前端使用的是 laravel-echo来收听广播,我们选择的底层实现方式是socket.io。所以首先我们要在package.json中添加 laravel-echosocket.io

Empfohlene Tutorials in verwandten Spalten: „
Laravel-Tutorial
< /a>》

Redis-Verbindung einrichten

Sie müssen den Broadcast-Treiber in der Datei .env ändern redis:

npm i --save socket.io-client
npm i --save laravel-echo
Nach dem Login kopieren

Ereignis erstellen🎜🎜🎜
import Echo from "laravel-echo";
window.io = require("socket.io-client");
window.Echo = new Echo({    
broadcaster: "socket.io",    
host: window.location.hostname + ":6001"
});
Nach dem Login kopieren
🎜🎜🎜Nach dem Ausführen des Berufungsbefehls wird ein Ereignis erstellt Das Verzeichnis wird im App-Verzeichnis angezeigt. Die Broadcast-Ereignisklasse OrderShipped.php wird in diesem Verzeichnis generiert. Wir müssen die folgenden Änderungen an der automatisch generierten OrderShipped-Klasse vornehmen🎜
  • 🎜Die Implementierung von ShouldBroadcast hinzufügen🎜
  • 🎜Ändern Sie die BroadcastOn-Methode und verwenden Sie den öffentlichen Rundfunkkanal orderStatus🎜
  • 🎜Passen Sie den Nachrichtennamen der Übertragung an (🎜nicht erforderlich🎜) [Standardmäßig verwendet Laravel den Klassennamen des Ereignisses, um das Ereignis zu übertragen. Sie können den Übertragungsnamen jedoch anpassen, indem Sie die Methode „broadcastAs“ in definieren event:]🎜
  • 🎜Ändern Sie den Konstruktor🎜
🎜Die vollständige Änderung ist wie folgt und kann direkt ersetzt werden🎜
<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="csrf-token" content="">
    <title>News Room</title>
    <link href="" rel="stylesheet">
</head>

<body>
    <div class="content">
        News Room
    </div>
    <script src=""></script>
    <script>
        Echo.channel("laravel_database_orderStatus") // 广播频道名称
    .listen(".anyName", e => {
        // 消息名称
        console.log(e); // 收到消息进行的操作,参数 e 为所携带的数据
    });
    </script>
</body>

</html>
Nach dem Login kopieren
Nach dem Login kopieren

API-Routing festlegen🎜
npm install && npm run watch
Nach dem Login kopieren
Nach dem Login kopieren

Front-End-Gerüst installieren🎜🎜🎜rrreee🎜🎜

Redis🎜🎜Da wir Redis Broadcast verwenden, müssen wir Predis installieren Bibliothek: 🎜🎜🎜rrreee🎜🎜
🎜Redis Broadcast verwendet die Redis Pub/Sub-Funktion zum Senden; Sie müssen es jedoch mit einem Websocket-Server koppeln, der Redis-Nachrichten akzeptieren kann, um Nachrichten an den Websocket-Kanal zu senden🎜< /blockquote>
🎜Wenn Redis ein Ereignis sendet, wird das Ereignis auf dem angegebenen Kanal veröffentlicht. Die übergebenen Daten sind eine JSON-Formatzeichenfolge, die den Ereignisnamen, Nutzdaten und den Benutzer enthält, der die Ereignis-Socket-ID generiert hat 🎜

Installieren Sie laravel -echo-server. Abonnieren Sie Redis Sub🎜🎜Wenn Sie Pusher verwenden, verwenden Sie einfach Laravel. Wenn Sie 🎜Redis + socket.io🎜 verwenden, müssen Sie einen verwenden Open-Source-Projekt laravel-echo-server . Daher werden wir jetzt laravel-echo-server🎜🎜globale Installation🎜🎜🎜rrreee🎜🎜

verwenden, um Laravel zu initialisieren -echo- server🎜
🎜rrreee🎜🎜

Laravel-echo-server starten🎜🎜🎜rrreee🎜🎜
  • Das wird es Ausgabe nach erfolgreichem Start Das folgende Protokoll
rrreee

Testübertragung 🎜🎜Ausgeführt im Browserhttp://yourhost /api/ship ?id=16🎜🎜🎜rrreee🎜🎜
  • Laravel-Echo-Server-Verbindung erfolgreich!

Installieren Sie die Abhängigkeiten von laravel-echo 🎜🎜Da das Frontend laravel-echo</code verwendet > Um Radio zu hören, haben wir als zugrunde liegende Implementierung <code class="sprache-plaintext highlighter-rouge">socket.io ausgewählt. Also müssen wir zuerst laravel-echo und zu <code class="lingual-plaintext highlighter-rouge">package.json</code hinzufügen > class="sprache-plaintext highlighter-rouge">socket.ios Abhängigkeiten🎜🎜🎜rrreee🎜🎜🎜Bearbeiten Sie „resource/js/bootstrap.js“ und fügen Sie den folgenden Code hinzu🎜🎜🎜rrreee🎜🎜

测试页面

resources/views/ 下建立页面 test.blade.php 内容为

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="csrf-token" content="">
    <title>News Room</title>
    <link href="" rel="stylesheet">
</head>

<body>
    <div class="content">
        News Room
    </div>
    <script src=""></script>
    <script>
        Echo.channel("laravel_database_orderStatus") // 广播频道名称
    .listen(".anyName", e => {
        // 消息名称
        console.log(e); // 收到消息进行的操作,参数 e 为所携带的数据
    });
    </script>
</body>

</html>
Nach dem Login kopieren
Nach dem Login kopieren

js 代码的意思是收听 news 通道内的 News 事件对象,将接收到的事件在控制台打印出来。

基本构建

npm install && npm run watch
Nach dem Login kopieren
Nach dem Login kopieren

相关推荐:最新的五个Laravel视频教程

Das obige ist der detaillierte Inhalt vonLassen Sie uns über den Broadcast-Mechanismus von Laravel7.0 sprechen. Es gibt immer das, was Sie wollen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verwende ich die Komponenten von Laravel, um wiederverwendbare UI -Elemente zu erstellen? Wie verwende ich die Komponenten von Laravel, um wiederverwendbare UI -Elemente zu erstellen? Mar 17, 2025 pm 02:47 PM

In dem Artikel wird das Erstellen und Anpassen wiederverwendbarer UI -Elemente in Laravel mithilfe von Komponenten ermittelt, die Best Practices für die Organisation anbieten und Vorschläge für Verbesserungspakete vorschlagen.

Wie erstelle und verwende ich benutzerdefinierte Blade -Direktiven in Laravel? Wie erstelle und verwende ich benutzerdefinierte Blade -Direktiven in Laravel? Mar 17, 2025 pm 02:50 PM

In dem Artikel wird das Erstellen und Verwenden benutzerdefinierter Blade -Richtlinien in Laravel erläutert, um die Vorlagen zu verbessern. Es umfasst die Definition von Direktiven, die Verwendung in Vorlagen und die Verwaltung in großen Projekten, um Vorteile wie eine verbesserte Wiederverwendbarkeit von Code und R hervorzuheben

Was sind die besten Praktiken für die Verwendung von Laravel in einer Cloud-nativen Umgebung? Was sind die besten Praktiken für die Verwendung von Laravel in einer Cloud-nativen Umgebung? Mar 14, 2025 pm 01:44 PM

In dem Artikel werden Best Practices für die Bereitstellung von Laravel in Cloud-nativen Umgebungen erörtert und sich auf Skalierbarkeit, Zuverlässigkeit und Sicherheit konzentriert. Zu den wichtigsten Problemen gehören Containerisierung, Microservices, staatenlose Design- und Optimierungsstrategien.

Wie kann ich in Laravel benutzerdefinierte Validierungsregeln erstellen und verwenden? Wie kann ich in Laravel benutzerdefinierte Validierungsregeln erstellen und verwenden? Mar 17, 2025 pm 02:38 PM

In dem Artikel wird das Erstellen und Verwenden von benutzerdefinierten Validierungsregeln in Laravel erläutert und bietet Schritte zur Definition und Implementierung. Es zeigt Vorteile wie Wiederverwendbarkeit und Spezifität und bietet Methoden zur Erweiterung des Laravel -Validierungssystems.

Wie benutze ich Laravels handwerkliche Konsole, um gemeinsame Aufgaben zu automatisieren? Wie benutze ich Laravels handwerkliche Konsole, um gemeinsame Aufgaben zu automatisieren? Mar 17, 2025 pm 02:39 PM

Laravels Artisan Console automatisiert Aufgaben wie das Generieren von Code, das Ausführen von Migrationen und die Planung. Zu den wichtigsten Befehlen gehören: Controller, Migrieren und DB: Saatgut. Benutzerdefinierte Befehle können für bestimmte Anforderungen erstellt werden, um die Workflow -Effizienz zu verbessern.

Wie kann ich die Routing-Funktionen von Laravel verwenden, um seo-freundliche URLs zu erstellen? Wie kann ich die Routing-Funktionen von Laravel verwenden, um seo-freundliche URLs zu erstellen? Mar 17, 2025 pm 02:43 PM

In dem Artikel werden Laravels Routing verwendet, um SEO-freundliche URLs zu erstellen, die Best Practices, kanonische URLs und Tools für die SEO-Optimierung abdecken.

Was ist besser, Django oder Laravel? Was ist besser, Django oder Laravel? Mar 28, 2025 am 10:41 AM

Sowohl Django als auch Laravel sind Full-Stack-Frameworks. Django eignet sich für Python -Entwickler und komplexe Geschäftslogik, während Laravel für PHP -Entwickler und elegante Syntax geeignet ist. 1.Django basiert auf Python und folgt der "batteriebetriebenen" Philosophie, die für schnelle Entwicklung und hohe Parallelität geeignet ist. 2. Laravel basiert auf PHP, der die Entwicklererfahrung betont und für kleine bis mittlere Projekte geeignet ist.

Wie verwende ich Datenbanktransaktionen in Laravel, um die Datenkonsistenz sicherzustellen? Wie verwende ich Datenbanktransaktionen in Laravel, um die Datenkonsistenz sicherzustellen? Mar 17, 2025 pm 02:37 PM

In dem Artikel wird die Verwendung von Datenbanktransaktionen in Laravel erörtert, um die Datenkonsistenz aufrechtzuerhalten und Methoden mit DB -Fassade und eloquenten Modellen, Best Practices, Ausnahmebehandlung und Tools zur Überwachung und Debuggierung von Transaktionen aufzunehmen.

See all articles