検索
ホームページPHPフレームワークLaravelLaravelインスタントアプリケーションの実装方法

インスタント インタラクティブ アプリケーション

最新の Web アプリケーションでは、最も一般的な支払いコールバックやサードパーティのログインなど、多くのシナリオでインスタント メッセージングの使用が必要です。これらのビジネス シナリオは、基本的に次のプロセスに従う必要があります。

# クライアントは関連ビジネスをトリガーし、サードパーティ アプリケーションの操作 (支払いなど) を生成します

# クライアントはサーバーの応答結果を待ちます(ユーザー 他社アプリの操作完了)

# 他社アプリがサーバーに処理結果を通知(決済完了)

# サーバーがクライアントに通知処理結果

# クライアントベース 結果についてのフィードバック (支払い成功ページにジャンプ)

#以前は、この種のインスタント メッセージングを実現し、クライアントが正しく応答できるようにするために処理結果に関して、最も一般的に使用されるテクノロジはポーリングでした。これは、シングルステップの HTTP プロトコルの方向性により、クライアントがサーバーに処理結果を何度も能動的に要求することしかできないためです。この方法には明らかな欠点があり、サーバー側のリソースを占有するだけでなく、サーバー側の処理結果をリアルタイムに取得することができません。

WebSocket プロトコルを使用して、リアルタイム インタラクションを処理できるようになりました。これは、サーバーがクライアントに情報をアクティブにプッシュできる双方向プロトコルです。この記事では、Laravel の強力なイベント システムを使用してリアルタイム インタラクションを構築します。次の知識が必要です:

#● Laravel Event

##● Redis

##● Socket.io

##● Node.js

#Redis

始める前に、Redis サービスを開き、Laravel アプリケーションでそれを構成して有効にする必要があります。プロセス全体を通じて、Redis のサブスクリプションおよび公開メカニズムを使用する必要があるためです。インスタントメッセージングを有効にします。

Redis は、オープンソースの効率的なキー/値ストレージ システムです。通常、キーと値のペアを保存するデータ構造サーバーとして使用され、文字列、ハッシュ、リスト、セット、および順序付けされた組み合わせをサポートできます。 Laravel で Redis を使用するには、Composer を通じて predis/predis パッケージ ファイルをインストールする必要があります。

Configuration

アプリケーション内の Redis の設定ファイルは config/database.php に保存されており、このファイル内に Redis サービス情報を含むファイルが表示されます。 redis array:

'redis' => [
  'cluster' => false,
  'default' => [
    'host' => '127.0.0.1',
    'port' => 6379,
    'database' => 0,
  ],
]

redis サービスのポートを変更する場合は、構成ファイル内のポートの一貫性を保ってください。

Laravel イベント

ここでは、Laravel の強力なイベント ブロードキャスト機能を使用する必要があります:

Broadcast Event

多くの最新のアプリケーションは、Web Sockets を使用してリアルタイムの対話型ユーザー インターフェイスを実装しています。サーバー上で一部のデータが変更されると、WebSocket 接続を介してメッセージがクライアントに配信され、処理されます。

このタイプのアプリケーションの構築を支援します。 Laravel を使用すると、WebSocket 接続経由でイベントを簡単にブロードキャストできます。 Laravel を使用すると、イベントをブロードキャストして、サーバー側およびクライアント側の JavaScript フレームワークにイベント名を共有できます。

設定

すべてのイベント ブロードキャスト設定オプションは、config/broadcasting.php 設定ファイルに保存されます。 Laravel には、Pusher、Redis、Log などの利用可能なドライバーがいくつか付属していますが、ここでは Redis をブロードキャスト ドライバーとして使用します。これには、predis/predis クラス ライブラリが必要です。

デフォルトのブロードキャスト ドライバーはプッシャーを使用するため、.env ファイルで BROADCAST_DRIVER=redis を設定する必要があります。 ユーザーが WeChat ログインをスキャンした後にブロードキャストする WechatLoginedEvent イベント クラスを作成します。

<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class WechatLoginedEvent extends Event implements ShouldBroadcast
{
    use SerializesModels;
    public $token;
    protected $channel;
    /**
     * Create a new event instance.
     *
     * @param  string $token
     * @param  string $channel
     * @return void
     */
    public function __construct($token, $channel)
    {
        $this->token = $token;
        $this->channel = $channel;
    }
    /**
     * Get the channels the event should be broadcast on.
     *
     * @return array
     */
    public function broadcastOn()
    {
        return [$this->channel];
    }
    /**
     * Get the name the event should be broadcast on.
     *
     * @return string
     */
    public function broadcastAs()
    {
        return &#39;wechat.login&#39;;
    }
}

broadcastOn メソッドは、ブロードキャストされるチャネルを表す配列を返す必要があることに注意する必要があります。 BroadcastingAs は、ブロードキャストによってトリガーされたイベントを表す文字列を返します。Laravel のデフォルトでは、イベント クラスの完全なクラス名が返されます。ここでは、App\Events\WechatLoginedEvent です。

最も重要なことは、次のことが必要であることです。このクラスに ShouldBroadcast コントラクトを実装させます。 Laravel はイベント生成時にこの名前空間を自動的に追加しており、このコントラクトはブロードキャストオン メソッドのみを制約します。

イベントが完了したら、次のステップはイベントをトリガーすることです。単純なコード行で十分です:

event(new WechatLoginedEvent($token, $channel));

この操作は自動的にイベントの実行をトリガーし、情報をブロードキャストします。 。基礎となるブロードキャスト操作は、redis のサブスクリプションおよび公開メカニズムに依存します。 RedisBroadcaster は、指定されたチャネルを通じてイベント内の一般にアクセス可能なデータを公開します。公開されたデータをより詳細に制御したい場合は、broadcastWith メソッドをイベントに追加すると、配列

/**
 * Get the data to broadcast.
 *
 * @return array
 */
 public function broadcastWith() 
 {
   return [&#39;user&#39; => $this->user->id];
 }

#Node.js および Socket.io

## が返されます。

#公開された情報については、Redis パブリケーションをサブスクライブし、WebSocket プロトコルを使用して情報を転送できるように接続するサービスが必要です。ここでは、Node.js とソケット.io を借用できます。これは非常に便利です。このサービスを構築します:

// server.js
var app = require(&#39;http&#39;).createServer(handler);
var io = require(&#39;socket.io&#39;)(app);
var Redis = require(&#39;ioredis&#39;);
var redis = new Redis();
app.listen(6001, function () {
  console.log(&#39;Server is running!&#39;) ;
});
function handler(req, res) {
  res.writeHead(200);
  res.end(&#39;&#39;);
}
io.on(&#39;connection&#39;, function (socket) {
  socket.on(&#39;message&#39;, function (message) {
    console.log(message)
  })
  socket.on(&#39;disconnect&#39;, function () {
    console.log(&#39;user disconnect&#39;)
  })
});
redis.psubscribe(&#39;*&#39;, function (err, count) {
});
redis.on(&#39;pmessage&#39;, function (subscrbed, channel, message) {
  message = JSON.parse(message);
  io.emit(channel + &#39;:&#39; + message.event, message.data);
});

ここでは、Node.js を使用して、socket.io サーバーを導入し、6001 ポートをリッスンします。redis の psubscribe コマンドを借用して、ワイルドカードを使用してバッチで迅速にサブスクライブします。メッセージがトリガーされ、メッセージは WebSocket 経由で転送されます。

Socket.io クライアント

Web フロントエンドでは、サーバー ポート 6001 との通信を開始し、チャネルにサブスクライブするために、Socket.io クライアントを導入する必要があります。 events:

// client.js
let io = require(&#39;socket.io-client&#39;)
var socket = io(&#39;:6001&#39;)
      socket.on($channel + &#39;:wechat.login&#39;, (data) => {
        socket.close()
        // save user token and redirect to dashboard
})

閉じた通信ループ全体が終了し、開発プロセスは次のようになります:

# ブロードキャスト通知をサポートする Laravel でイベントを構築する

#● ブロードキャストする必要があるチャネルとイベント名を設定する

#● Redis ドライバーを使用するようにブロードキャストを設定する

● Redis パブリケーションをサブスクライブするための継続的なサービスを提供し、WebSocket プロトコルを通じてパブリッシュされたコンテンツをクライアントにプッシュします。

## クライアントはサーバーの WebSocket トンネルを開き、イベントをサブスクライブし、指定されたイベントを応答する。

Laravel 関連の技術記事の詳細については、

Laravel Framework Getting Started Tutorial

列にアクセスして学習してください。

以上がLaravelインスタントアプリケーションの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Laravelフレームワークのスキル共有Laravelフレームワークのスキル共有Apr 18, 2025 pm 01:12 PM

継続的な技術の進歩のこの時代において、現代のプログラマーにとって高度なフレームワークをマスターすることが重要です。この記事では、Laravelフレームワークであまり知られていないテクニックを共有することで、開発スキルを向上させるのに役立ちます。エレガントな構文と幅広い機能で知られるこの記事では、その強力な機能を掘り下げ、効率的で保守可能なWebアプリケーションを作成するための実用的なヒントとコツを提供します。

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

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

Laravelユーザーログイン機能リストLaravelユーザーログイン機能リストApr 18, 2025 pm 01:06 PM

Laravelのユーザーログイン機能の構築は重要なタスクであり、この記事では、ユーザー登録からログイン検証までのすべての重要なステップをカバーする包括的な概要を提供します。 Laravelの組み込み検証機能の力に飛び込み、特定のニーズに合わせてログインプロセスをカスタマイズして拡張することをガイドします。これらのステップバイステップの手順に従うことにより、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アプリケーションのバージョン化の維持と管理に不可欠です。

PHPフレームワークLaravelを使用する最新の方法PHPフレームワークLaravelを使用する最新の方法Apr 18, 2025 pm 12:57 PM

Laravelは、エレガントな構文と強力な機能で開発者の間で人気のあるPHPベースのWebアプリケーションフレームワークです。その最新バージョンは、開発エクスペリエンスとアプリケーションのパフォーマンスを向上させるために設計された多くの改善と新機能を紹介します。この記事は、Laravelの最新のアプローチに飛び込み、これらの更新を活用してより強力で効率的なWebアプリケーションを構築する方法に焦点を当てます。

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

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

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

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

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

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