目次
まえがき
実験対象のサイズを減らして、より少ないステップのチュートリアルを探してください。
サブタスクの成功に関するフィードバックを取得できるようにタスクを分解する
詳細をログに記録します
テスト対象についてよく理解するようにしてください。
すべての関係者、特に成功している関係者からの包括的な情報
検索エラーメッセージが役に立たない場合や、検索結果が多すぎる場合は、コードを見てください。
成功しても喜ぶ必要はありません。何度か練習してください。
更新されたチュートリアルを選択してみてください
検索エンジン指向プログラミング
オントロジー
プロジェクトの作成
データベース情報の構成
サーバー側パッケージのBeyondcode/laravel-websocketsをインストールします
プッシャーのインストール
Cconfiguring Laravel WebSockets
イベントの作成
クライアント パッケージ laravel-echo をインストールします
结语
ホームページ PHPフレームワーク Laravel laravel-websocket を使用して「ロープロファイル」ブロードキャスト システムを構築する方法を教えます

laravel-websocket を使用して「ロープロファイル」ブロードキャスト システムを構築する方法を教えます

Jan 05, 2023 pm 04:28 PM
laravel

この記事では、laravel-websocketを使って「低構成版」ブロードキャストシステムを実装する方法を中心に、Laravelに関する知識をまとめていますので、興味のある方はぜひご覧ください。みんなに、役に立ちました。

laravel-websocket を使用して「ロープロファイル」ブロードキャスト システムを構築する方法を教えます

まえがき

インターネットでいくつかのチュートリアルを見つけましたが成功しませんでした。その後、1 つのチュートリアルを勉強し続け、最終的に成功しました。そこで、私と同じくらい愚かな人々を助けたいと考えて、このチュートリアルを書きました。また、読者の皆様に誤解を与えないようお願いいたします。読者が私のチュートリアルをあまり信用しないことを願っています。実際、私はぼんやりと成功しましたが、私のこのチュートリアルには落とし穴があるかもしれません。 もう 1 つの点は、私の研究プロセスはかなり実りあると感じているということです。十分な時間があれば、自分で研究することをお勧めします。

チュートリアルの最初に、このチュートリアルで紹介する方法を私がどのようにして思いついたのかを簡単に紹介します。 Laravel や関連ライブラリが更新されると互換性がなくなったり混乱したりする可能性があり、その後再び問題が発生する可能性があるため、このチュートリアルを読む人はこの部分に注意することをお勧めします。その際、読者は独自に調査する必要があるかもしれません。

なぜこれが一般的な紹介だと言えるのかというと、多くの場所が私によって作られたと感じているからです。さらに、言葉では言い表せない経験も必要になるかもしれません。

実験対象のサイズを減らして、より少ないステップのチュートリアルを探してください。

最初は中国語版の公式ドキュメントに従いましたが、後から複雑すぎることがわかり、間違えたかもしれない、失敗するだろう。また、エラーメッセージすら出ない場合もあれば、エラーメッセージがあっても見つからないか、全く違う答えの質問が多すぎるかのどちらかです。できる限り規模を縮小すれば、落とし穴はできるだけ避けられるはずです。

サブタスクの成功に関するフィードバックを取得できるようにタスクを分解する

最初はステップごとに実行し、最後に成功したかどうかを確認しました。この方法はあまりにも非効率的でした。すると、一部のサブステップは、laravel-websockets のインストールが成功したらダッシュボードを開くなど、いくつかの方法で成功したかどうかを判断できることがわかりました。それは /laravel-websockets です。ブロードキャストを送信するコードもあり、成功すると、前述のダッシュボードで効果が確認できます。最後に、すべてが成功すると、ブラウザで効果を確認できます。ですから、後々、今の段階でうまくいかなかったら、それを続けずに、この段階で何がうまくいかなかったのかを研究し続けることになります。

詳細をログに記録します

ログを記録したところ、パラメーターが少なかったため、クライアントの Echo がまったく初期化されていなかったことがわかりました。先ほどエラーメッセージが出たようなのですが、よく分からなかったようです。 Echoの初期化前後で2つの異なるログを出力したところ、前者のみが実行され、後者はまったく実行されていないことがわかり、プログラムがエラーに遭遇して実行を停止したのではないかという結論に達しました。

テスト対象についてよく理解するようにしてください。

たとえば、特定のエラー レポートに関する関連情報が見つかりませんでした。しかし、後でその中の特定の単語が設定に含まれていることがわかり、その設定を変更するだけで問題ありませんでした。それは、「Uncaught Options オブジェクトはクラスターを提供する必要がある」です。ところが、インターネットで私と同じ方法を見つけたのですが、その方法は前に見たことがあるのか​​、投稿者が「ダメだ」と書いていたので試しませんでした。

すべての関係者、特に成功している関係者からの包括的な情報

使いにくい場合や誤解を招く可能性もありますが、より多くの情報が問題解決に役立つと信じています疑わしい。たとえば、Bilibili で「laravel ブロードキャスト」を検索し、いくつかのビデオを見ました。また、いくつかの非公式ドキュメントのチュートリアルも検索しました。

検索エラーメッセージが役に立たない場合や、検索結果が多すぎる場合は、コードを見てください。

ただし、役に立つ可能性は低いと思うので、次のような場合に使用してください。他に選択肢はありません。この方法で、コードのコメントを解除するときにコメントを 1 行減らしたところ、非常に奇妙なエラー メッセージが表示されたことがわかりました。

成功しても喜ぶ必要はありません。何度か練習してください。

手順が増えると、問題が発生しやすくなります。手順がたくさんあります。この放送システムでは。練習すればするほど、より慣れてきます。

更新されたチュートリアルを選択してみてください

私は通常、1 年以内の条件を検索エンジンに追加します。

検索エンジン指向プログラミング

今回の問題は半分以上が検索エンジンを通して解決されたような気がしており、完全に自分だけで解決できた部分は少ないように感じました。

オントロジー

私のチュートリアルのいくつかの側面は非常に長く、プロジェクトの作成から始まり、データベースの構成についても触れられています。上級読者は一部のコンテンツを無視する可能性があります。ハイエンドの読者にとっては、私の作品を読む必要はないはずです。ただし、コマンドの紹介は基本的にないので、必要な場合は以下の英語記事を読むことをお勧めします。
メモ

これは公開チャンネルです。開発環境でのみ使用されると言われているデフォルトの同期を使用するキューもあります。つまり、私のチュートリアルはおそらく非常に不自由ですが、これを実行すれば、公式ドキュメントに従って新しい構成を試したり、新しい機能を追加したりするための出発点として使用できるはずです。

私のチュートリアルでは主にこの記事を参照します: Laravel WebSocket の使用方法

プロジェクトの作成

Apache24\htdocs または同様の場所で次のコマンドを実行します:

composer create-project laravel/laravel bc
ログイン後にコピー

プロジェクト パスで次のコマンドを実行します:

php artisan serve
ログイン後にコピー

注上記のコマンドを実行した後は、通常、現在のコマンド ライン ウィンドウではコマンドを実行できないため、コマンド ライン ウィンドウを再起動する必要があります。バックグラウンドで実行されているコマンドと連携しない限り、現在のコマンド ライン ウィンドウでコマンドの実行を継続したいと考えています。

データベース情報の構成

データベースを構成する前にデータベースを作成する必要があります。ここでは test を使用します。ただし、作成していなくても、移行時に作成するよう求められます。これまでこのデータベースを削除したことがなかったので、ほとんど忘れていました。

.env

DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=testDB_USERNAME=rootDB_PASSWORD=1234
ログイン後にコピー

私の構成をコピーしないで、データベースの実際の情報を入力するように注意してください。

サーバー側パッケージのBeyondcode/laravel-websocketsをインストールします

プロジェクト パスで次のコマンドを実行します:

composer require beyondcode/laravel-websockets
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"php artisan migrate
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"
ログイン後にコピー

プッシャーのインストール

次のコマンドを実行しますプロジェクト パス内のコマンド コマンド:

composer require pusher/pusher-php-server
ログイン後にコピー

この記事は私が参照した記事とは異なることに注意してください。私がインストールした記事は最新バージョンである必要があります。原文には特定のバージョンがあるようです。

Cconfiguring Laravel WebSockets

.env

BROADCAST_DRIVER=pusherPUSHER_APP_ID=12345PUSHER_APP_KEY=ABCDEFGPUSHER_APP_SECRET=HIJKLMNOPPUSHER_HOST=127.0.0.1PUSHER_PORT=6001PUSHER_SCHEME=httpPUSHER_APP_CLUSTER=mt1
ログイン後にコピー

これは私が参照した英語の記事とも異なることに注意してください。 env はよりエレガントです。結局のところ、他の場所では最初に .env が読み取られます。 .env は関数に近いように感じられ、1 か所変更すれば、すべての呼び出し先を変更する必要はありません。前の文に何か問題があるような気がしますが、おそらくそういう意味でしょう。

2項目目から4項目目までの値は無造作に記入されていることに注意してください。

Laravel WebSocket サーバーを実行します

プロジェクト パスで次のコマンドを実行します:

php artisan websockets:serve
ログイン後にコピー

これは現在のコマンドでもありますコマンド実行後の行はウィンドウに入力できません。 [推奨学習: laravel ビデオ チュートリアル ]

次に、ブラウザのアドレス バーに 127.0.0.1:8000/laravel-websockets と入力して、前の操作が成功。 。 「phpArtisan Serve」を介してサーバーを実行していない場合は、ポートが異なる可能性があります。 「接続」ボタンをクリックし、「イベント」の下に何かが表示されたら、段階的に成功しているはずです。これを行わないと、この Web ページを開くのが非常に遅くなることに注意してください。少なくとも私にとっては非常に遅いです。これは、ダウンロードが非常に遅い js ライブラリが含まれているためです。 ブレード テンプレートを変更する次の動作はオプションであることに注意してください。なお、以下のCDNは問題があるのか​​わかりませんが、やはり大手メーカーのCDNではないようです。 遅すぎてそれをしたくない場合は、vendor\beyondcode\laravel-websockets\resources\views\dashboard.blade.php の

<script  src="https://www.php.cn/link/19e0c9edc141240b5de750fa83ba1bed"></script>
ログイン後にコピー

<script  src="https://cdn.bootcdn.net/ajax/libs/plotly.js/2.17.0/plotly.min.js"></script>
ログイン後にコピー
に置き換えることができます。

このファイルは、VS Code の検索機能を使用して cdn.plot.ly/plotly-latest.min.js を直接検索することで見つかりました。また、Firefox 開発者ツール ネットワークでは、この JS ライブラリの読み込み速度が遅いことがわかりました。また、そのような場所でファイルを直接変更するのは洗練されていません。

イベントの作成

プロジェクト パスで次のコマンドを実行します:

php artisan make:event NewTrade
ログイン後にコピー

app\Events\NewTrade.php

<?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 NewTrade implements ShouldBroadcast{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $trade;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($trade)
    {
        $this->trade = $trade;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('trades');
    }}
ログイン後にコピー

次のコマンドをプロジェクト パスで実行します。プロジェクトパス :

php artisan tinker
ログイン後にコピー

このコマンドを実行するとLaravelの対話型インタプリタが起動し、一部のステートメントを入力すると直接実行できることが分かりました。他にも実用的なコマンドがいくつかあります。これは、実行後、現在のコマンド ライン ウィンドウでは通常のシステム コマンドを入力できませんが、このコマンド ライン ウィンドウの後に php ステートメントを入力する必要があることも意味します。ちなみに、VS CodeのターミナルはtinkerではCtrl Vが使えませんが、右クリック機能を使ってペーストすることができます。

次に、上記で php 職人ティンカーが実行されたコマンド ライン ウィンドウで次のコマンドを実行します:

event (new \App\Events\NewTrade('test'))
ログイン後にコピー
ログイン後にコピー

その後、上記のコマンド ライン ウィンドウ 127.0.0.1 を実行できます。 8000/laravel -websockets ページには、送信されたメッセージが表示されます。それが見えれば、ステージは成功したことを意味します。

クライアント パッケージ laravel-echo をインストールします

プロジェクト パスで次のコマンドを実行します:

npm installnpm install --save-dev laravel-echo pusher-js
ログイン後にコピー

resources\js\bootstrap.js

import Echo from 'laravel-echo';import Pusher from 'pusher-js';window.Pusher = Pusher;window.Echo = new Echo({
    broadcaster: 'pusher',
    key: import.meta.env.VITE_PUSHER_APP_KEY,
    wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`,
    wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,
    wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,
    forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https',
    enabledTransports: ['ws', 'wss'],
    cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER,});
ログイン後にコピー

Payここに注意 参考にした英語の記事とも異なります。ファイル内のこれらのコメントを解除し、最後に「cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER」という行を追加しました。

プロジェクト パスで次のコマンドを実行します:

npm run dev
ログイン後にコピー

これは、これを実行した後、現在のコマンド ライン ウィンドウにコマンドを入力できなくなることも意味します。

添加客户端脚本

在文件
resources\views\welcome.blade.php
的 head 标签的结尾添加以下代码:

        @vite('resources/js/app.js')        <script>
            window.onload = function(){
                Echo.channel('trades')
                .listen('NewTrade', (e) => {
                    console.log(e.trade);
                });
            };
        </script>
    </head>
ログイン後にコピー

注意这里也跟我参考的那篇英文文章不一样。改了两处,一个是导入 app.js 的方法换了。另外套了一层 window.onload。

然后在浏览器的地址栏输入 127.0.0.1:8000/ 启动开发者工具并切换到控制台标签页。然后再在前面运行过 php artisan tinker 的那个命令行窗口中执行以下命令:

event (new \App\Events\NewTrade('test'))
ログイン後にコピー
ログイン後にコピー

最后切换到前面提到的开发者工具中的控制台标签页,应该能看到一条“test”消息。能看到就说明最终成功了。

结语

我只是个菜狗,不要问我太复杂的问题。我从开始搞这个广播系统到最终成功好像用了两三天的时间,就凭这个时间你应该就能体会到我有多菜了。

最后因为我是菜狗,所以可能会有一些理解上的错误,欢迎指出来。不过按照我的这个教程做基本上应该是会成功的。我做完这个教程自己照着又做了两遍,没问题。不过也可能会因为我没注意到一些东西,或者读者的环境跟我的不一样导致读者不成功。所以我也不敢保证。感觉早晚会失效,失效了如果我没更新的话谁看到了就回复一下提醒一下别人吧。

原文地址:https://learnku.com/articles/74366

以上がlaravel-websocket を使用して「ロープロファイル」ブロードキャスト システムを構築する方法を教えますの詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の 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は紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 Apr 18, 2025 am 09:24 AM

CraftCMSを使用してWebサイトを開発する場合、特にCSSやJavaScriptファイルを頻繁に更新する場合、リソースファイルのキャッシュ問題が発生することがよくあります。古いバージョンのファイルがブラウザによってキャッシュされ、ユーザーが最新の変更を表示しないようにすることがあります。この問題は、ユーザーエクスペリエンスに影響を与えるだけでなく、開発とデバッグの難しさを高めます。最近、プロジェクトで同様のトラブルに遭遇し、いくつかの調査の後、プラグインWiejeben/Craft-Laravel-Mixが見つかりました。

Laravelを学ぶ方法Laravelを無料で学ぶ方法 Laravelを学ぶ方法Laravelを無料で学ぶ方法 Apr 18, 2025 pm 12:51 PM

Laravelフレームワークを学びたいが、資源や経済的圧力に苦しんでいないのですか?この記事では、Laravelの無料学習を提供し、オンラインプラットフォーム、ドキュメント、コミュニティフォーラムなどのリソースを使用して、PHP開発の旅から習得するための堅実な基盤を築く方法を教えてくれます。

Laravelユーザーログイン機能 Laravelユーザーログイン機能 Apr 18, 2025 pm 12:48 PM

Laravelは、ユーザーモデル(Eloquentモデル)の定義、ログインフォームの作成(ブレードテンプレートエンジン)、ログインコントローラーの作成(認証\ログインコントローラーの継承)、ログイン要求の検証(Auth ::試行)の検証など、ユーザーログイン機能を実装するための包括的なAuthフレームワークを提供します。ヘッダー。さらに、AUTHフレームワークは、パスワードのリセット、電子メールの登録と検証などの機能も提供します。詳細については、Laravelのドキュメントを参照してください:https://laravel.com/doc

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

Laravelのバージョンは何ですか?初心者向けのLaravelのバージョンを選択する方法 Laravelのバージョンは何ですか?初心者向けのLaravelのバージョンを選択する方法 Apr 18, 2025 pm 01:03 PM

初心者向けのLaravel Frameworkバージョンの選択ガイドでは、この記事は、多くのバージョンの中で初心者が情報に基づいた選択を行うのを支援するように設計されたLaravelのバージョンの違いに分かれています。各リリースの主要な機能に焦点を当て、長所と短所を比較し、初心者がスキルレベルとプロジェクトの要件に基づいてLaravelの最も適切なバージョンを選択できるように便利なアドバイスを提供します。初心者の場合、Laravelの適切なバージョンを選択することは、学習曲線と全体的な開発経験に大きな影響を与える可能性があるため、重要です。

Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Apr 18, 2025 pm 01:00 PM

Laravelフレームワークには、開発者のさまざまなニーズを満たすためにバージョン番号を簡単に表示するための組み込みの方法があります。この記事では、Composer Command Lineツールの使用、.ENVファイルへのアクセス、PHPコードを介したバージョン情報の取得など、これらの方法について説明します。これらの方法は、Laravelアプリケーションのバージョン化の維持と管理に不可欠です。

LaravelとThinkPhpの違い LaravelとThinkPhpの違い Apr 18, 2025 pm 01:09 PM

LaravelとThinkPhpはどちらも人気のあるPHPフレームワークであり、開発における独自の利点と短所を持っています。この記事では、2つの深さを比較し、アーキテクチャ、機能、パフォーマンスの違いを強調して、開発者が特定のプロジェクトのニーズに基づいて情報に基づいた選択を行うのに役立ちます。

See all articles