目次
ブロードキャスト サービス プロバイダー
Redis 接続のセットアップ
Create Event
プッシャーを使用する場合は、直接 laravel を使用します。
ソケット.io
测试页面
基本构建
ホームページ PHPフレームワーク Laravel laravel7.0のブロードキャストメカニズムについて話しましょう。欲しいものは必ずあります!

laravel7.0のブロードキャストメカニズムについて話しましょう。欲しいものは必ずあります!

Jul 28, 2021 pm 03:57 PM
ブロードキャストメカニズム

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 メソッドを定義します。]

  • コンストラクターを変更します。

完全な変更は次のとおりで、直接置き換えることができます

<?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;);
    }
}
ログイン後にコピー
API ルーティングの設定

Route::get(&#39;/ship&#39;, function (Request $request) {
    $id = $request->input(&#39;id&#39;);
    broadcast(new OrderShipped($id)); // 触发事件
    return &#39;Order Shipped!&#39;;
});
ログイン後にコピー

フロントエンド スキャフォールディングのインストール

composer require laravel/uiphp artisan ui vue --auth
ログイン後にコピー
Redis

Redis ブロードキャストを使用するため、Predis ライブラリをインストールする必要があります:

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を初期化します。サーバー

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を起動
##
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-server 接続に成功しました。
laravel-echo の事前依存関係をインストールする
  • フロントエンドは
  • laravel-echo
を使用してブロードキャストをリッスンするため、選択した基盤となる実装は

ソケット.io

です。したがって、最初に

laravel-echosocket.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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか? Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか? Mar 17, 2025 pm 02:47 PM

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

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Mar 17, 2025 pm 02:50 PM

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

クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? Mar 14, 2025 pm 01:44 PM

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

Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Mar 17, 2025 pm 02:38 PM

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

Laravelの職人コンソールを使用して一般的なタスクを自動化するにはどうすればよいですか? Laravelの職人コンソールを使用して一般的なタスクを自動化するにはどうすればよいですか? Mar 17, 2025 pm 02:39 PM

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

Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか? Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか? Mar 17, 2025 pm 02:43 PM

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

どちらが良いのか、DjangoとLaravel? どちらが良いのか、DjangoとLaravel? Mar 28, 2025 am 10:41 AM

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

Laravelでデータベーストランザクションを使用してデータの一貫性を確保するにはどうすればよいですか? Laravelでデータベーストランザクションを使用してデータの一貫性を確保するにはどうすればよいですか? Mar 17, 2025 pm 02:37 PM

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

See all articles