ホームページ  >  記事  >  バックエンド開発  >  PHPとPusherを使用したリアルタイム通信

PHPとPusherを使用したリアルタイム通信

WBOY
WBOYオリジナル
2023-06-28 12:11:241765ブラウズ

インターネットの発展に伴い、リアルタイム コミュニケーションの重要性がますます高まっており、オンライン カスタマー サービスでも、ゲームでのリアルタイム インタラクションでも、リアルタイム コミュニケーションのサポートが必要です。 Web開発の主流言語の1つであるPHP言語は、実はリアルタイム通信手段がどんどん増えています。その中で、Pusher テクノロジーを使用すると、リアルタイム通信機能を迅速かつ便利に実現できます。

プッシャーとは何ですか?

Pusher は、アプリケーションが独自のサーバーを構築せずにリアルタイム通信機能を簡単に実装できるようにするリアルタイム メッセージング サービスです。 WebSocket プロトコルに基づいており、強力な信頼性と安定性、使いやすさ、高い開発効率という利点があります。さらに、Pusher は、PHP、JavaScript、Ruby、その他の言語を含む、さまざまな SDK も提供します。これらの SDK を使用すると、開発者はプッシャー サービスをアプリケーションに迅速に統合して、リアルタイム通信機能を実現できます。

プッシャーの使い方は?

Pusher を使用する前に、Pusher アカウントを登録し、アプリケーションを作成する必要があります。次に、アプリケーション内でアプリケーション キー、アプリケーション シークレット、およびアプリケーション ID を生成し、この情報をアプリケーションに追加する必要があります。

次に、Pusher PHP SDK をインストールする必要があります。これは Composer を通じてインストールできます:

composer require pusher/pusher-php-server "^4.0"

インストールが完了したら、コードの記述を開始できます:

<?php

// 引入Pusher SDK
require __DIR__ . '/vendor/autoload.php';

// 初始化Pusher实例
$options = array(
  'cluster' => 'YOUR_CLUSTER',
  'useTLS' => true
);
$pusher = new PusherPusher(
  'APP_KEY',
  'APP_SECRET',
  'APP_ID',
  $options
);

// 发送消息
$pusher->trigger('channel_name', 'event_name', array('message' => 'hello world'));

上記のコードのデモ Pusher の使用方法。置き換える必要がある内容は次のとおりです。

  1. YOUR_CLUSTER を独自の Pusher Cluster に置き換えます。
  2. APP_KEY、APP_SECRET、APP_ID を独自のプッシャー アプリ キー、アプリ シークレット、アプリ ID に置き換えます。

この PHP スクリプトは、「message」属性を持つ JSON データ パケットを「channel_name」という名前のチャネルにプッシュします。データ パケットには、「hello world」というメッセージが含まれています。

もちろん、実際のアプリケーションでは、この方法で Pusher にのみメッセージを送信することは不可能です。以下では、実際のアプリケーションでの Pusher の使用方法を詳しく紹介します。

実践的な戦闘: リアルタイム チャット ルーム

次に、Pusher を使用して、ユーザー間のリアルタイム チャット機能を実現するためのリアルタイム チャット ルームを構築します。

ステップ 1: 準備

まず、Pusher で新しいアプリケーションを作成する必要があります。 Pusherの公式Webサイトにログインし、「CREATE NEW APP」ボタンをクリックし、基本情報を入力し、画面の指示に従ってアプリケーションを作成します。

次に、アプリケーション設定の [キー] タブで APP_KEY、APP_SECRET、APP_ID を見つけ、この情報を適切に保管する必要があります。

次に、PHP スクリプトを実行するために Web サーバーをセットアップする必要があります。リアルタイムでメッセージをプッシュする必要があるため、従来の Apache サーバーや Nginx サーバーは使用できず、WebSocket プロトコルをサポートするサーバーを使用する必要があります。 Ratchet PHP ライブラリを WebSocket サーバーとして使用することをお勧めします。これは Composer を通じてインストールできます。

composer require cboden/ratchet

ステップ 2: 基本インターフェイスを構築する

PHP コードを書き始める前に、次のことを行う必要があります。基本的なインターフェイス チャット ルーム インターフェイスを構築します。インターフェイスには次の要素が含まれている必要があります:

  1. 入力ボックス: チャット コンテンツを入力するために使用されます。
  2. 送信ボタン: チャット コンテンツの送信に使用されます。
  3. メッセージ リスト: 送信されたチャット コンテンツを表示するために使用されます。

ここでは、比較的単純な HTML と JavaScript コードを使用して、このインターフェイスを実装します。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>实时聊天室</title>
</head>
<body>
  <ul id="messages"></ul>
  <form id="chat-form">
    <input type="text" id="message-input"/>
    <button type="submit">发送</button>
  </form>
  <script src="https://js.pusher.com/7.0/pusher.min.js"></script>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    // 初始化Pusher客户端
    const pusher = new Pusher('APP_KEY', {
      cluster: 'YOUR_CLUSTER',
      encrypted: true
    });

    // 订阅频道
    const channel = pusher.subscribe('chat-channel');

    // 处理消息
    channel.bind('chat-message', function(data) {
      $('#messages').append('<li>' + data.message + '</li>');
    });

    // 发送消息
    $('#chat-form').submit(function(e) {
      e.preventDefault();
      const message = $('#message-input').val();
      $('#message-input').val('');
      $.post('/send-message.php', {message: message});
    });
  </script>
</body>
</html>

上記のコードでは、Pusher クライアントと jQuery ライブラリを導入し、Pusher クライアント インスタンスを定義しました。次に、「chat-c​​hannel」という名前のプッシャー チャネルをサブスクライブし、このチャネルで「chat-message」イベントが受信されたときにメッセージ リストにメッセージを書き込むイベント ハンドラー関数を定義しました。同時にフォーム送信イベント処理関数も定義し、ユーザーが送信ボタンをクリックするとフォームデータが/send-message.phpファイルにPOSTされます。

ステップ 3: メッセージの送受信

次に、フォーム データがプッシャー サーバーに正しく送信できるように、/send-message.php ファイルにコードを実装する必要があります。完全な /send-message.php コードは次のとおりです。

<?php

// 引入Pusher SDK
require __DIR__ . '/vendor/autoload.php';

// 初始化Pusher实例
$options = array(
  'cluster' => 'YOUR_CLUSTER',
  'useTLS' => true
);
$pusher = new PusherPusher(
  'APP_KEY',
  'APP_SECRET',
  'APP_ID',
  $options
);

// 获取消息内容
$message = $_POST['message'];

// 将消息推送到Pusher服务器中
$pusher->trigger('chat-channel', 'chat-message', array('message' => $message));

上記のコードでは、最初に Pusher SDK を導入し、Pusher インスタンスを初期化しました。次に、フォームによって送信されたデータに基づいてメッセージを「chat-c​​hannel」という名前のプッシャー チャネルにプッシュし、イベント名とメッセージの内容を指定します。

このように、ユーザーがチャット ルームにメッセージを入力して [送信] ボタンをクリックすると、メッセージは /send-message.php ファイルに POST され、PHP コードがプッシュされます。プッシャーサーバーへのメッセージ。この時点で、プッシャー サーバーは、「チャット チャネル」に登録しているすべてのクライアントにメッセージをブロードキャストし、メッセージの送受信プロセス全体を完了します。

結論

Pusher テクノロジーを使用してリアルタイム通信機能を実装すると、実装の難易度が大幅に簡素化され、開発効率が向上します。上記のデモ例を通して、実際にリアルタイム チャット ルームを構築するためにプッシャー テクノロジーを使用するのが非常に便利であることがわかります。

もちろん、Pusher はチャット ルーム アプリケーションのシナリオに限定されず、リアルタイム ゲーム、モノのインターネット、リアルタイム データ監視、その他の実装可能なシナリオなど、無数のシナリオで使用できます。プッシャーテクノロジーを使用。リアルタイム通信機能も実装する必要がある場合は、Pusher を使用して関連機能をすばやく実装してみてください。

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

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