laravel7.0のブロードキャストメカニズムについて話しましょう。欲しいものは必ずあります!
laravel7.0 ブロードキャスト メカニズム (Redisソケット.io)
ブロードキャスト サービス プロバイダー
イベントをブロードキャストする前に、まずApp\を登録する必要があります。プロバイダー\ブロードキャストサービスプロバイダー
。新しくインストールした Laravel アプリケーションでは、config/app.php
構成ファイルの providers
配列内の対応するサービス プロバイダーのコメントを解除するだけで済みます。このプロバイダーを使用すると、ブロードキャスト認証ルートとコールバックを登録できます。
関連コラム チュートリアルの推奨事項: 「laravel チュートリアル」
Redis 接続のセットアップ
.env
ファイル内のブロードキャスト ドライバーを redis
に変更する必要があります:
BROADCAST_DRIVER=redis
Create Event
php artisan make:event OrderShipped
OrderShipped.phpこのディレクトリに生成されます。自動的に生成された OrderShipped クラスに次の変更を加える必要があります。
- ShouldBroadcast の実装を追加します。
- broadcastOn メソッドを変更し、パブリック メソッドを使用します。ブロードキャストチャネル orderStatus
- ブロードキャストメッセージ名をカスタマイズします (
不要) [デフォルトでは、Laravel はイベントのクラス名を使用してイベントをブロードキャストしますが、イベントで渡すことができます。 ブロードキャスト名をカスタマイズするために、broadcastAs メソッドを定義します。]
- コンストラクターを変更します。
完全な変更は次のとおりで、直接置き換えることができますAPI ルーティングの設定<?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 'anyName'; } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new Channel('orderStatus'); } }ログイン後にコピー
Route::get('/ship', function (Request $request) {
$id = $request->input('id');
broadcast(new OrderShipped($id)); // 触发事件
return 'Order Shipped!';
});
ログイン後にコピー
フロントエンド スキャフォールディングのインストールRoute::get('/ship', function (Request $request) { $id = $request->input('id'); broadcast(new OrderShipped($id)); // 触发事件 return 'Order Shipped!'; });
composer require laravel/uiphp artisan ui vue --auth
composer require predis/predis
Redis ブロードキャストは、ブロードキャスト用の Redis の pub/sub 機能。ただし、Redis を受け入れることができる機能と組み合わせる必要があります。メッセージの Websocket サーバーは、メッセージを Websocket チャネルにブロードキャストするようにペアリングされます。#Redis がイベントをブロードキャストすると、イベントは指定されたチャネルにパブリッシュされ、渡されるデータは JSON 形式の文字列で、イベント名、ロード データ データ、イベント ソケット ID を生成したユーザーが含まれます
laravel-echo-server をインストールし、Redis Sub をサブスクライブします
プッシャーを使用する場合は、直接 laravel を使用します。
Redis ソケット.io を使用する場合は、次のものが必要ですオープンソースプロジェクト laravel-echo-server を使用します。そこで、laravel-echo-serverグローバルインストール
npm install -g 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)
laravel-echo-server start
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!
- ブラウザ上で実行します http://yourhost/api/ship?id=16
Channel: laravel_database_orderStatus Event: anyName
- フロントエンドは laravel-echo
ソケット.io
です。したがって、最初にlaravel-echo と
socket.io の依存関係
npm i --save socket.io-client npm i --save laravel-echo
を
package.json に追加する必要があります
resource/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" });
测试页面
在 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>
js 代码的意思是收听 news 通道内的 News 事件对象,将接收到的事件在控制台打印出来。
基本构建
npm install && npm run watch
相关推荐:最新的五个Laravel视频教程
以上がlaravel7.0のブロードキャストメカニズムについて話しましょう。欲しいものは必ずあります!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

この記事では、スケーラビリティ、信頼性、セキュリティに焦点を当てたクラウドネイティブ環境でLaravelを展開するためのベストプラクティスについて説明します。重要な問題には、コンテナ化、マイクロサービス、ステートレス設計、最適化戦略が含まれます。

この記事では、Laravelでカスタム検証ルールの作成と使用について説明し、それらを定義および実装する手順を提供します。再利用性や特異性などの利点を強調し、Laravelの検証システムを拡張する方法を提供します。

Laravelの職人コンソールは、コードの生成、移行の実行、スケジューリングなどのタスクを自動化します。重要なコマンドには、Make:Controller、Migrate、およびDB:Seedが含まれます。特定のニーズに合わせてカスタムコマンドを作成し、ワークフロー効率を向上させることができます。

この記事では、Laravelのルーティングを使用してSEOに優しいURLを作成し、Best Practice、Canonical URL、SEO最適化のツールをカバーします。ワード数:159

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

この記事では、Laravelでデータベーストランザクションを使用して、データの一貫性を維持し、DBファサードと雄弁なモデルを使用した方法の詳細、ベストプラクティス、例外処理、およびトランザクションの監視とデバッグのためのツールについて説明します。
