ホームページ > バックエンド開発 > PHPチュートリアル > Pusherを使用してLaravelにリアルタイム通知を追加する方法

Pusherを使用してLaravelにリアルタイム通知を追加する方法

Joseph Gordon-Levitt
リリース: 2025-02-09 11:58:10
オリジナル
430 人が閲覧しました

Pusherを使用してLaravelにリアルタイム通知を追加する方法

この記事は、Rafie YounesとWern Anchetaによってピアレビューされました。 SetePointコンテンツを最高にするためにSitePointのピアレビュアーのすべてに感謝します!

最新のWebユーザーは、アプリケーション内で発生するすべてのことを知らされることを期待しています。すべてのソーシャルメディアのWebサイトだけでなく、最近も他のどこでも、通知ドロップダウンさえないWebサイトになりたくありません。
幸いなことに、LaravelとPusherを使用すると、この機能を実装することは簡単です。このチュートリアルで書くコードはこちらからご覧いただけます。

pusher.com経由の画像

キーテイクアウトPusherを使用してLaravelにリアルタイム通知を追加する方法 LaravelとPusherを利用して、リアルタイム通知を実装し、ユーザーアクティビティに関する即時のフィードバックを提供することにより、ユーザーの相互作用を強化します。

Pusherは、WebSocketを使用してリアルタイムの双方向機能の統合を簡素化します。これは、AJAXでサーバーを投票するよりも効率的です。

Simple Laravelブログアプリケーションを設定し、MySQLデータベースを構成し、移行を使用してユーザーインタラクション用のフォロワーシステムを作成します。

Laravelの組み込み通知システムを使用して、新しいフォロワーと投稿に関する通知を送信し、アプリケーションの動的な相互作用機能を強化します。
    プッシャーでリアルタイム通知を実装し、ページを更新する必要なく、イベントが発生するときにすぐに通知を受信できるようにします。
  • プライベートチャネルと認証を使用してリアルタイムアプリケーションを保護し、対象が意図したユーザーによってのみ受信されるようにします。
  • リアルタイム通知
  • ユーザーに良いエクスペリエンスを提供するために、通知をリアルタイムで表示する必要があります。 1つのアプローチは、Ajaxリクエストを定期的にバックエンドに送信し、存在する場合は最新の通知を取得することです。
  • より良いアプローチは、WebSocketの力を活用し、送信した瞬間に通知を受信することです。これは、このチュートリアルで使用するものです。
  • pusher
  • Pusherは、
  • のWebサービスです
  • …WebSocketsを介してリアルタイムの双方向機能をWebおよびモバイルアプリに統合します。

非常にシンプルなAPIがありますが、Laravel BroadcastingとLaravel Echoでさらに簡単に使用します。 このチュートリアルでは、既存のブログにリアルタイム通知を追加します。 基本機能は、ストリームを使用したリアルタイムLaravel通知に似ています。 クリストファーヴォンディが作成したこのレポジトリ(少し変更しました)から始めます。これは、投稿でCrudを実行できるユーザーが簡単なブログです。

プロジェクト

初期化

最初に、Simple Laravelブログ:

をクローンします
<span>git clone https://github.com/vickris/simple-blog
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次に、MySQLデータベースを作成し、環境変数を設定して、アプリケーションにデータベースにアクセスできるようにします。

env.Exampleを.ENVにコピーして、データベース関連の変数を更新しましょう。

<span>cp .env.example .env
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
.env

次に、プロジェクトの依存関係を
にインストールしましょう

および移行とシードコマンドを実行して、データベースにいくつかのデータを入力します。
<span>composer install
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

アプリケーションを実行して訪問 /投稿すると、生成された投稿のリストが表示されます。 アプリケーションを確認し、ユーザーを登録し、いくつかの投稿を作成します。非常に基本的なアプリですが、デモを完璧に提供しています。

ユーザーの関係に従ってください
php artisan migrate <span>--seed
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ユーザーに他のユーザーをフォローし、ユーザーがフォローすることができるようにしたいので、それを実現するためにユーザー間に多くの関係を作成する必要があります。

ユーザーに関連するピボットテーブルを作成しましょう。新しいフォロワーの移行を行います:

その移行にいくつかのフィールドを追加する必要があります。フォローしているユーザーを表すユーザー_ID、フォローしているユーザーを表すfollows_idフィールド。

次のように移行を更新します:

php artisan make:migration create_followers_table <span>--create=followers
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
次に、移行してテーブルを作成しましょう:

ストリームアプローチの記事に従っていた場合、この時点まで物事がほぼ同じであることがわかります。以下の部分では、別のアプローチで同じフォロー機能を達成します。

<span>public function up()
</span><span>{
</span>    <span>Schema<span>::</span>create('followers', function (Blueprint $table) {
</span>        <span>$table->increments('id');
</span>        <span>$table->integer('user_id')->index();
</span>        <span>$table->integer('follows_id')->index();
</span>        <span>$table->timestamps();
</span>    <span>});
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ユーザーモデルに関係の方法を追加しましょう。

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

app/user.php

ユーザーモデルに必要な関係があるため、フォロワーはユーザーのすべてのフォロワーを返し、ユーザーがフォローしているすべての人を返します。
<span>// ...
</span>
<span>class extends Authenticatable
</span><span>{
</span>    <span>// ...
</span>
    <span>public function followers() 
</span>    <span>{
</span>        <span>return $this->belongsToMany(<span>self::</span>class, 'followers', 'follows_id', 'user_id')
</span>                    <span>->withTimestamps();
</span>    <span>}
</span>
    <span>public function follows() 
</span>    <span>{
</span>        <span>return $this->belongsToMany(<span>self::</span>class, 'followers', 'user_id', 'follows_id')
</span>                    <span>->withTimestamps();
</span>    <span>}
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ユーザーが別のユーザーをフォローできるようにし、ユーザーが特定のユーザーをフォローしているかどうかを確認するために、ヘルパー関数が必要になります。

app/user.php

完璧。モデルセットを使用すると、ユーザーをリストする時が来ました

ユーザーのリスト

<span>// ...
</span>
<span>class extends Authenticatable
</span><span>{
</span>    <span>// ...
</span>
    <span>public function follow($userId) 
</span>    <span>{
</span>        <span>$this->follows()->attach($userId);
</span>        <span>return $this;
</span>    <span>}
</span>
    <span>public function unfollow($userId)
</span>    <span>{
</span>        <span>$this->follows()->detach($userId);
</span>        <span>return $this;
</span>    <span>}
</span>
    <span>public function isFollowing($userId) 
</span>    <span>{
</span>        <span>return (boolean) $this->follows()->where('follows_id', $userId)->first(['id']);
</span>    <span>}
</span>
<span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
必要なルートを設定することから始めましょう

routes/web.php

次に、ユーザー向けの新しいコントローラーを作成する時が来ました:

インデックスメソッドを追加します:
<span>//...
</span><span>Route<span>::</span>group(['middleware' => 'auth'], function () {
</span>    <span>Route<span>::</span>get('users', 'UsersController@index')->name('users');
</span>    <span>Route<span>::</span>post('users/{user}/follow', 'UsersController@follow')->name('follow');
</span>    <span>Route<span>::</span>delete('users/{user}/unfollow', 'UsersController@unfollow')->name('unfollow');
</span><span>});
</span>
ログイン後にコピー
ログイン後にコピー

app/http/controllers/userscontroller.php

メソッドにはビューが必要です。 users.indexビューを作成して、このマークアップを入力してみましょう:
php artisan make:controller UsersController
ログイン後にコピー
ログイン後にコピー

<span>// ...
</span><span>use App<span>\User</span>;
</span><span>class UsersController extends Controller
</span><span>{
</span>    <span>//..
</span>    <span>public function index()
</span>    <span>{
</span>        <span>$users = User<span>::</span>where('id', '!=', auth()->user()->id)->get();
</span>        <span>return view('users.index', compact('users'));
</span>    <span>}
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
resources/views/users/index.blade.php

/ユーザーページにアクセスしてユーザーのリストを表示できます。

フォローする、または解除する

@<span>extends('layouts.app')
</span>
@<span>section('content')
</span>    <span><div class="container">
</span>        <span><div class="col-sm-offset-2 col-sm-8">
</span>
            <span><!-- Following -->
</span>            <span><div class="panel panel-default">
</span>                <span><div class="panel-heading">
</span>                    All Users
                <span></div>
</span>
                <span><div class="panel-body">
</span>                    <span><table class="table table-striped task-table">
</span>                        <span><thead>
</span>                        <span><th>User</th>
</span>                        <span><th> </th>
</span>                        <span></thead>
</span>                        <span><tbody>
</span>                        @<span>foreach ($users as $user)
</span>                            <span><tr>
</span>                                <span><td clphpass="table-text"><div>{{ $user->name }}</div></td>
</span>                                @<span>if (auth()->user()->isFollowing($user->id))
</span>                                    <span><td>
</span>                                        <span><form action="{{route('unfollow', ['id' => <span><span>$user->id</span>])}}"</span> method="POST">
</span>                                            <span>{{ csrf_field() }}
</span>                                            <span>{{ method_field('DELETE') }}
</span>
                                            <span><button type="submit" id="delete-follow-{{ <span><span>$user->id</span> }}"</span> class="btn btn-danger">
</span>                                                <span><i class="fa fa-btn fa-trash"></i>Unfollow
</span>                                            <span></button>
</span>                                        <span></form>
</span>                                    <span></td>
</span>                                @<span>else
</span>                                    <span><td>
</span>                                        <span><form action="{{route('follow', ['id' => <span><span>$user->id</span>])}}"</span> method="POST">
</span>                                            <span>{{ csrf_field() }}
</span>
                                            <span><button type="submit" id="follow-user-{{ <span><span>$user->id</span> }}"</span> class="btn btn-success">
</span>                                                <span><i class="fa fa-btn fa-user"></i>Follow
</span>                                            <span></button>
</span>                                        <span></form>
</span>                                    <span></td>
</span>                                @<span>endif
</span>                            <span></tr>
</span>                        @<span>endforeach
</span>                        <span></tbody>
</span>                    <span></table>
</span>                <span></div>
</span>            <span></div>
</span>        <span></div>
</span>    <span></div>
</span>@endsection
ログイン後にコピー
usersControllerには、フォローおよび解除方法がありません。この部分をまとめるためにそれらを完了させましょう。

app/http/controllers/userscontroller.php

フォロー機能が完了しました。 /usersページからユーザーをフォローして解除できます。

通知

Laravelは、複数のチャネルを介して通知を送信するためのAPIを提供します。電子メール、SMS、Web通知、その他の種類の通知はすべて、通知クラスを使用して送信できます。

2種類の通知があります:

フォロー通知:ユーザーが別のユーザーが続いたときにユーザーに送信
  • 投稿作成通知:特定のユーザーが新しい投稿を作成したときに特定のユーザーのフォロワーに送信
  • ユーザーは通知
に従いました

職人コマンドを使用して、通知の移行を生成できます。

移行して、この新しいテーブルを作成しましょう。

<span>git clone https://github.com/vickris/simple-blog
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

フォロー通知から始めています。このコマンドを実行して、通知クラスを生成しましょう:

<span>cp .env.example .env
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

その後、作成したばかりの通知クラスファイルを更新します:

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

app/notifications/userfollowed.php
<span>composer install
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これらの数行のコードを使用すると、多くのことを達成できます。最初に、この通知が作成されたときに$フォロワーのインスタンスを注入する必要があります。

viaメソッドを使用して、Laravelにデータベースチャネルを介してこの通知を送信するように指示しています。 Laravelがこれに遭遇すると、通知テーブルに新しいレコードが作成されます。
user_idと通知タイプが自動的に設定されていることに加えて、拡張できます より多くのデータを含む通知。それがTodatabaseの目的です。返された配列は、通知のデータフィールドに追加されます。

最後に、suldqueueを実装することにより、Laravelは自動的にこの通知をバックグラウンドで実行するキュー内に配置し、応答が高速化されます。これは理にかなっています。なぜなら、後でプッシャーを使用するときにHTTP呼び出しを追加するからです。

ユーザーがフォローされたら通知を開始しましょう。

app/http/controllers/userscontroller.php

ユーザーモデルのnotifyメソッドを呼び出すことができます。これは、既に通知可能な特性を使用しているためです。 通知するモデルは、それを使用してNotifyメソッドにアクセスできるようにする必要があります。

読み取り
php artisan migrate <span>--seed
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
として通知をマークします
通知には、いくつかの情報とリソースへのリンクが含まれます。たとえば、ユーザーが新しい投稿に関する通知を受け取った場合、通知は有益なテキストを表示し、クリック時にユーザーを投稿にリダイレクトし、読み取りとしてフラグを立てる必要があります。

要求にread = notification_id入力があるかどうかをチェックするミドルウェアを作成します。

次のコマンドを使用してミドルウェアを作成しましょう

次に、このコードをミドルウェアのハンドルメソッド内に入れましょう:

app/http/middleware/marknotificationas read.php

各リクエストに対してミドルウェアを実行するために、$ MiddlewareGroupsに追加します。

<span>git clone https://github.com/vickris/simple-blog
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
app/http/kernel.php

それが完了したので、いくつかの通知を示しましょう。

通知を表示

AJAXを使用して通知のリストを表示し、プッシャーでリアルタイムで更新する必要があります。 まず、コントローラーに通知メソッドを追加しましょう:

<span>cp .env.example .env
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
app/http/controllers/userscontroller.php

これにより、最後の5つの未読通知が返されます。アクセス可能にするためにルートを追加する必要があります。

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
routes/web.php

ヘッダーの通知のドロップダウンを追加します。

<span>composer install
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
リソース/ビュー/レイアウト/app.blade.php

また、現在のユーザーのIDを取得するために、スクリプト内にグローバルwindow.laravel.userid変数を追加しました。

javascriptとsass

Laravel Mixを使用してJavaScriptとSASSをコンパイルします。まず、NPMパッケージをインストールする必要があります

このコードをapp.js:

に追加しましょう
php artisan migrate <span>--seed
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

app/resources/assets/js/app.js
php artisan make:migration create_followers_table <span>--create=followers
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは単なる初期化です。通知を使用して、AjaxまたはPusherを介して取得されているかどうかにかかわらず、すべての通知オブジェクトを保存します。

おそらく、notification_typesには通知のタイプが含まれています。

次に、Ajaxを介して通知を「取得」しましょう

app/resources/assets/js/app.js

これで、APIから最新の通知を取得し、ドロップダウン内に配置しています。
<span>public function up()
</span><span>{
</span>    <span>Schema<span>::</span>create('followers', function (Blueprint $table) {
</span>        <span>$table->increments('id');
</span>        <span>$table->integer('user_id')->index();
</span>        <span>$table->integer('follows_id')->index();
</span>        <span>$table->timestamps();
</span>    <span>});
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
addnotificationsの内部では、現在の通知をlodashを使用して新しい通知と連結し、表示する最新の5のみを使用します。

app/resources/assets/js/app.js

この関数は、すべての通知の文字列を構築し、ドロップダウン内に配置します。 通知が受信されていない場合、「通知なし」を表示するだけです。 また、ドロップダウンボタンにクラスを追加します。これは、通知が存在するときに色を変更するだけです。 Githubの通知に少し似ています

最後に、いくつかのヘルパーは、通知文字列を作成するために機能します

php artisan migrate
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
app/resources/assets/js/app.js

これをapp.scssファイルに追加するだけです:

app/resources/assets/sass/app.scss

<span>// ...
</span>
<span>class extends Authenticatable
</span><span>{
</span>    <span>// ...
</span>
    <span>public function followers() 
</span>    <span>{
</span>        <span>return $this->belongsToMany(<span>self::</span>class, 'followers', 'follows_id', 'user_id')
</span>                    <span>->withTimestamps();
</span>    <span>}
</span>
    <span>public function follows() 
</span>    <span>{
</span>        <span>return $this->belongsToMany(<span>self::</span>class, 'followers', 'user_id', 'follows_id')
</span>                    <span>->withTimestamps();
</span>    <span>}
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
アセットをコンパイルしましょう:

今すぐユーザーをフォローしようとすると、通知が表示されます。彼らがそれをクリックすると、彼らは /ユーザーにリダイレクトされ、さらに通知は消えます。
新しい投稿通知

ユーザーが新しい投稿を作成したときにフォロワーに通知します。
<span>// ...
</span>
<span>class extends Authenticatable
</span><span>{
</span>    <span>// ...
</span>
    <span>public function follow($userId) 
</span>    <span>{
</span>        <span>$this->follows()->attach($userId);
</span>        <span>return $this;
</span>    <span>}
</span>
    <span>public function unfollow($userId)
</span>    <span>{
</span>        <span>$this->follows()->detach($userId);
</span>        <span>return $this;
</span>    <span>}
</span>
    <span>public function isFollowing($userId) 
</span>    <span>{
</span>        <span>return (boolean) $this->follows()->where('follows_id', $userId)->first(['id']);
</span>    <span>}
</span>
<span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
通知クラスを生成することから始めましょう。

<span>git clone https://github.com/vickris/simple-blog
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次のように、生成されたクラスを更新しましょう

<span>cp .env.example .env
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
app/notifications/newarticle.php

次に、通知を送信する必要があります。これを行う方法はいくつかあります。 私は雄弁なオブザーバーを使用するのが好きです。

ポストのオブザーバーを作り、そのイベントを聞いてみましょう。 App/Observers/Postobserver.php

という新しいクラスを作成します

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
次に、AppServiceProvider:

にオブザーバーを登録します

<span>composer install
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
app/providers/appserviceprovider.php

次に、JSに表示されるメッセージをフォーマットするだけです:

php artisan migrate <span>--seed
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
app/resources/assets/js/app.js

そしてヴォイラ!ユーザーは、フォローと新しい投稿に関する通知を取得しています!先に進んで、試してみてください!

プッシャーでリアルタイムに行く

Pusherを使用して、WebSocketsを介してリアルタイムで通知を取得する時が来ました。

Pusher.comで無料のPusherアカウントにサインアップして、新しいアプリを作成します。

ブロードキャスト構成ファイル内のアカウントのオプションを設定します:

php artisan make:migration create_followers_table <span>--create=followers
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

config/broadcasting.php
<span>public function up()
</span><span>{
</span>    <span>Schema<span>::</span>create('followers', function (Blueprint $table) {
</span>        <span>$table->increments('id');
</span>        <span>$table->integer('user_id')->index();
</span>        <span>$table->integer('follows_id')->index();
</span>        <span>$table->timestamps();
</span>    <span>});
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
その後、プロバイダーアレイにAppProvidersBroadCastServiceProviderを登録します

config/app.php

php artisan migrate
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
PusherのPHP SDKとLaravel Echoを今すぐインストールする必要があります:

ブロードキャストするために通知データを設定する必要があります。ユーザーフォロウド通知を更新しましょう:

<span>// ...
</span>
<span>class extends Authenticatable
</span><span>{
</span>    <span>// ...
</span>
    <span>public function followers() 
</span>    <span>{
</span>        <span>return $this->belongsToMany(<span>self::</span>class, 'followers', 'follows_id', 'user_id')
</span>                    <span>->withTimestamps();
</span>    <span>}
</span>
    <span>public function follows() 
</span>    <span>{
</span>        <span>return $this->belongsToMany(<span>self::</span>class, 'followers', 'user_id', 'follows_id')
</span>                    <span>->withTimestamps();
</span>    <span>}
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
<span>// ...
</span>
<span>class extends Authenticatable
</span><span>{
</span>    <span>// ...
</span>
    <span>public function follow($userId) 
</span>    <span>{
</span>        <span>$this->follows()->attach($userId);
</span>        <span>return $this;
</span>    <span>}
</span>
    <span>public function unfollow($userId)
</span>    <span>{
</span>        <span>$this->follows()->detach($userId);
</span>        <span>return $this;
</span>    <span>}
</span>
    <span>public function isFollowing($userId) 
</span>    <span>{
</span>        <span>return (boolean) $this->follows()->where('follows_id', $userId)->first(['id']);
</span>    <span>}
</span>
<span>}
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
app/notifications/userfollowed.php

<span>//...
</span><span>Route<span>::</span>group(['middleware' => 'auth'], function () {
</span>    <span>Route<span>::</span>get('users', 'UsersController@index')->name('users');
</span>    <span>Route<span>::</span>post('users/{user}/follow', 'UsersController@follow')->name('follow');
</span>    <span>Route<span>::</span>delete('users/{user}/unfollow', 'UsersController@unfollow')->name('unfollow');
</span><span>});
</span>
ログイン後にコピー
ログイン後にコピー
およびnewPost:

app/notifications/newPost.php

php artisan make:controller UsersController
ログイン後にコピー
ログイン後にコピー
私たちがする必要がある最後のことは、JSを更新することです。 app.jsを開き、次のコードを追加します

app/resources/assets/js/app.js

<span>// ...
</span><span>use App<span>\User</span>;
</span><span>class UsersController extends Controller
</span><span>{
</span>    <span>//..
</span>    <span>public function index()
</span>    <span>{
</span>        <span>$users = User<span>::</span>where('id', '!=', auth()->user()->id)->get();
</span>        <span>return view('users.index', compact('users'));
</span>    <span>}
</span><span>}
</span>
ログイン後にコピー
ログイン後にコピー
そしてここで完了しました。通知はリアルタイムで追加されています。これでアプリで再生して、通知が更新される方法を確認できます。

結論

Pusherには非常にシンプルなAPIがあり、リアルタイムのイベントを非常に簡単に受信します。 Laravel通知と相まって、1つの場所から複数のチャネル(電子メール、SMS、Slackなど)を介して通知を送信できます。このチュートリアルでは、簡単なブログにユーザーフォーション機能を追加し、前述のツールで強化して、スムーズなリアルタイム機能を取得しました。

プッシャーやLaravelの通知にはさらに多くのことがあります。タンデムでは、サービスを使用すると、ブラウザ、モバイル、IoTデバイスにパブ/サブメッセージをリアルタイムで送信できます。ユーザーのオンライン/オフラインステータスを取得するためのAPIのプレゼンスもあります。 Pusherを使用してLaravelにリアルタイム通知を追加する方法それぞれのドキュメント(プッシャードキュメント、プッシャーチュートリアル、Laravelドキュメント)をチェックして、それらをより深く探索し、真の可能性を利用してください。

コメントでこれらのテクノロジーで構築したものを聞かせてください。

プッシャーを使用したLaravelでのリアルタイム通知に関するよくある質問(FAQ)

LaravelとPusherの統合に関する問題をトラブルシューティングするにはどうすればよいですか?

​​ LaravelとPusherの統合に関する問題のトラブルシューティングは、特にプラットフォームを初めて使用する場合は少し難しい場合があります。最初にすべきことは、.ENVファイルをチェックして、プッシャーアプリの資格情報が正しく入力されていることを確認することです。資格情報が正しい場合は、プッシャーデバッグコンソールを使用してエラーを確認できます。まだ問題が発生している場合は、Laravelの組み込みロギング機能を使用して、ブロードキャストプロセス中に発生するエラーを記録できます。これは、問題が発生する場所を正確に特定するのに役立ちます。

モバイル通知にはLaravelとPusherを使用できますか? Pusherは、モバイルデバイスに通知を送信するために使用できるREST APIを提供します。 Laravelのイベントブロードキャスト機能を使用して、これらの通知をトリガーできます。イベントがブロードキャストされたら、モバイルアプリでキャッチして通知を表示できます。

通知の外観をカスタマイズするにはどうすればよいですか?サーバー側ではなく、クライアント側。これは、通知をカスタマイズするには、JavaScript、CSS、またはその他のクライアント側のテクノロジーを使用する必要があることを意味します。 Pusherは、イベントをリッスンし、通知を表示するために使用できるJavaScriptライブラリを提供します。このライブラリを独自のCSSと組み合わせて使用​​して、通知の外観をカスタマイズできます。

LaravelとPusherの統合をテストするにはどうすればよいですか? Laravelの組み込みテスト機能を使用します。イベントをトリガーするテストを作成し、プッシャーデバッグコンソールを使用して、イベントがブロードキャストされているかどうかを確認できます。また、テストを作成して、イベントリスナーが正しく機能しているかどうかを確認することもできます。

LaravelとPusherの統合を保護するにはどうすればよいですか?あなたのデータ。プライベートチャネルを使用して統合を保護できます。プライベートチャネルには認証が必要です。つまり、認証されたユーザーのみがサブスクライブできることを意味します。 Laravelの組み込み認証機能を使用して認証を実装できます。

リアルタイムチャットアプリケーションにLaravelとPusherを使用できますか?アプリケーション。 Pusherは、メッセージを即座に送信および受信するために使用できるリアルタイム機能を提供します。 Laravelのイベント放送機能を使用して、これらのメッセージをトリガーできます。LaravelとPusherの統合のエラーを処理するにはどうすればよいですか?

​​

LaravelとPusherの統合の取り扱いエラーは、Laravelの組み込みエラー処理機能を使用して実行できます。放送プロセス中に発生する例外をキャッチし、それに応じてそれらを処理できます。また、プッシャーデバッグコンソールを使用してエラーを確認することもできます。

LaravelとPusherの統合を最適化するにはどうすればよいですか?あなたが放送するイベント。ブロードキャストが多すぎると、アプリケーションが遅くなり、多くのリソースを消費する可能性があります。 Laravelのキューシステムを使用して背景のイベントを処理することで統合を最適化することもできます。ライブストリーミングアプリケーション。 Pusherは、ライブビデオストリームのブロードキャストに使用できるリアルタイム機能を提供します。 Laravelのイベントブロードキャスト機能を使用して、これらのストリームをトリガーできます。

LaravelとPusherの統合を監視するにはどうすればよいですか?

​​

Pusherの分析機能を使用してLaravelとPusherの統合を監視できます。これらの機能を使用して、送信するメッセージの数、持っている接続の数、その他の重要なメトリックを追跡できます。 Laravelの組み込みロギング機能を使用して、ブロードキャストプロセス中に発生したエラーを記録することもできます。

以上がPusherを使用してLaravelにリアルタイム通知を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート