ホームページ  >  記事  >  バックエンド開発  >  PHP はどのようにして Redis メッセージ サブスクリプションを継続的にリッスンし、プッシュ通知を送信できるのでしょうか?

PHP はどのようにして Redis メッセージ サブスクリプションを継続的にリッスンし、プッシュ通知を送信できるのでしょうか?

WBOY
WBOYオリジナル
2023-09-05 11:21:321085ブラウズ

PHP はどのようにして Redis メッセージ サブスクリプションを継続的にリッスンし、プッシュ通知を送信できるのでしょうか?

PHP はどのようにして Redis メッセージ サブスクリプションを継続的にリッスンし、プッシュ通知を送信するのでしょうか?

インターネットの急速な発展に伴い、リアルタイム通知は多くのアプリケーションにとって必要な機能になりました。高性能の Key-Value ストレージ データベースとして、Redis のパブリッシュおよびサブスクライブ機能は、この需要に十分対応できます。この記事では、PHP を使用して Redis メッセージを継続的に監視し、プッシュ通知を通じてユーザーにメッセージを送信する方法を紹介します。

始める前に、Redis 拡張機能がインストールされていることを確認する必要があります。次のコマンドでインストールできます:

pecl install redis
  1. Redis サーバーに接続します

まず、Redis サーバーに接続する必要があります。 Redis クラスを使用してサーバーに接続し、Redis::connect メソッドを使用してホストとポートを指定します。ここの例では、localhost とデフォルトのポート 6379 を使用しています。

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
  1. メッセージのサブスクライブ

次に、Redis::subscribe を使用してサブスクライブできます。メソッド 1 つ以上のチャネルからのメッセージ。このメソッドは、サブスクライブするすべてのチャネルの名前を含む配列をパラメーターとして受け取ります。 notifications という名前のチャネルに登録する例を次に示します。

$redis->subscribe(['notifications'], function ($redis, $channel, $message) {
    // 在这里处理收到的消息
});

上記のコールバック関数では、受信したメッセージをビジネス ニーズに応じて処理できます。たとえば、プッシュ通知をユーザーに送信できます。

  1. プッシュ通知を送信する

プッシュ通知を送信するには、さまざまなサードパーティのプッシュ サービス (FCM や APN など) を使用するか、次のようなテクノロジーを直接使用できます。ウェブソケット。ここでは、例として FCM (Firebase Cloud Messaging) を使用してプッシュ通知を送信します。

Firebase Admin SDK がインストールされていることを確認してください。 Composer 経由でインストールできます:

composer require kreait/firebase-tokens
composer require kreait/firebase-admin

まず、必要なクラスをインポートし、Firebase Admin SDK を初期化します:

use KreaitFirebaseFactory;
use KreaitFirebaseMessagingCloudMessage;
use KreaitFirebaseMessagingNotification;

$factory = (new Factory)->withServiceAccount('/path/to/serviceAccountKey.json');
$messaging = $factory->createMessaging();

次に、メッセージを受信した後、プッシュを送信するコードを作成できます。 notification:

$redis->subscribe(['notifications'], function ($redis, $channel, $message) use ($messaging) {
    // 处理收到的消息

    // 构建推送通知
    $notification = Notification::create('标题', '内容');

    // 构建消息
    $message = CloudMessage::fromArray([
        'token' => '设备的推送令牌',
        'notification' => $notification,
    ]);

    // 发送推送通知
    $messaging->send($message);
});

上記の例では、デバイス プッシュ トークンを実際のデバイスのプッシュ トークンに置き換える必要があります。これは、FCM のドキュメントを参照して取得できます。またはAPN。

  1. 監視の開始

最後に、Redis::subscribe メソッドを呼び出して監視を開始します。

$redis->subscribe(['notifications'], function ($redis, $channel, $message) use ($messaging) {
    // 处理收到的消息

    // 构建推送通知
    $notification = Notification::create('标题', '内容');

    // 构建消息
    $message = CloudMessage::fromArray([
        'token' => '设备的推送令牌',
        'notification' => $notification,
    ]);

    // 发送推送通知
    $messaging->send($message);
});

上記のコードは、続行 Redis サーバーをリッスンします。新しいメッセージが notifications チャネルにパブリッシュされると、通知が受信され、プッシュ通知がユーザーに送信されます。

概要

この記事では、PHP を使用して Redis メッセージを継続的に監視し、プッシュ通知を通じてユーザーにメッセージを送信する方法を紹介します。 Redisのパブリッシュ・サブスクライブ機能を利用することで、リアルタイム通知機能を実現し、ユーザーエクスペリエンスを向上させることができます。同時に、サードパーティのプッシュサービスと組み合わせて、メッセージのプッシュ通知機能を簡単に実装できます。この記事が皆さんのお役に立てば幸いです。

以上がPHP はどのようにして Redis メッセージ サブスクリプションを継続的にリッスンし、プッシュ通知を送信できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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