ホームページ  >  記事  >  バックエンド開発  >  PHP で WebSocket API を使用してリアルタイム メッセージ プッシュを行う方法

PHP で WebSocket API を使用してリアルタイム メッセージ プッシュを行う方法

PHPz
PHPzオリジナル
2023-06-17 10:37:561258ブラウズ

技術の継続的な発展により、リアルタイム メッセージ プッシュは Web アプリケーションの重要な機能の 1 つになりました。 WebSocket は、新興テクノロジーとして、リアルタイム メッセージ プッシュの主流テクノロジーの 1 つになりました。この記事では、PHP で WebSocket API を使用してリアルタイムのメッセージ プッシュを行う方法を説明します。

1. WebSocket とは

WebSocket は新しいタイプのネットワーク通信プロトコルで、TCP プロトコルをベースにした双方向通信方式です。クライアントとサーバーの間に永続的な接続チャネルを確立し、このチャネル上で双方向通信を実行して、リアルタイムのメッセージ プッシュを実現できます。従来の HTTP プロトコルと比較して、WebSocket は遅延が短く、リアルタイム パフォーマンスが高くなります。

2. PHP で WebSocket API を使用する方法

PHP で WebSocket API を使用するには、WebSocket プラグインを導入する必要があります。一般的に使用される WebSocket プラグインには、phpwebsocket や Ratchet などがあります。この記事では、phpwebsocket を例として、WebSocket API を使用してリアルタイム メッセージ プッシュを行う方法について説明します。

  1. phpwebsocket のインストール

phpwebsocket は、RFC6455 および Hybi-10 プロトコルをサポートする PHP ベースの WebSocket 実装ライブラリです。使用する前に、phpwebsocketをダウンロードしてインストールする必要があります。 phpwebsocket の最新バージョンは、phpwebsocket 公式 Web サイトからダウンロードするか、composer を使用してインストールできます。

composer require cboden/ratchet
  1. サーバー プログラムの作成

phpwebsocket を使用する場合リアルタイムメッセージプッシュ、サーバープログラムを作成する必要があります。 WebSocket クラスを継承してサーバー プログラムを作成できます。コードは次のとおりです:

require_once('WebSocket.php');

class MyWebSocket extends WebSocket
{

    public function process($client, $message)
    {
        // 处理消息
    }

    public function connected($client)
    {
        // 处理连接
    }

    public function closed($client)
    {
        // 处理关闭
    }

}
  • process() メソッドは、クライアントによって送信されたメッセージを処理するために使用されます。 ) メソッドはクライアント接続の処理に使用され、
  • closed() メソッドはクライアントが接続を閉じる処理に使用されます。
サーバー プログラムを実行します
  1. phpwebsocket を使用してサーバー プログラムを実行します。コードは次のとおりです:
require_once('MyWebSocket.php');

$server = new MyWebSocket("127.0.0.1", 8080);

try {
    $server->run();
} catch (Exception $e) {
    $server->stdout($e->getMessage());
}

Writeクライアント プログラム
  1. クライアント プログラムでは、新しい WebSocket オブジェクトを作成し、サーバーとの接続を確立する必要があります。クライアント プログラムのコードは次のとおりです。
var socket = new WebSocket("ws://localhost:8080");

socket.onopen = function() {
    // 连接成功
};

socket.onmessage = function(event) {
    // 服务器发送消息
};

socket.onclose = function() {
    // 连接关闭
};

// 发送消息
socket.send('Hello, World!');

3. リアルタイム メッセージ プッシュの実装

リアルタイム メッセージ プッシュに WebSocket API を使用する場合は、次の点を考慮する必要があります。

単一クライアントへのメッセージのプッシュ
  1. 単一クライアントへのメッセージのプッシュは非常に簡単です。メッセージ送信メソッド send() を使用するだけです:
$this->send($client, $message);

すべてのクライアントにメッセージをプッシュする
  1. すべてのクライアントにメッセージをプッシュするには、接続されているすべてのクライアントを横断し、send() メソッドを使用してメッセージを送信する必要があります:
foreach ($this->clients as $client) {
    $this->send($client, $message);
}

グループ メッセージ
  1. #指定したクライアント グループにメッセージをプッシュするには、メッセージ グループを定義し、そのグループにクライアントを追加する必要があります。グループ メッセージを送信する場合は、送信するだけで済みます。グループ内のすべてのクライアントにメッセージを送信します。以上です:
  2. // 定义消息组
    $group = array();
    
    // 将客户端加入到消息组中
    $group[$client->id] = $client;
    
    // 群发消息
    foreach ($group as $member) {
        $this->send($member, $message);
    }
4. 概要

この記事では、PHP で WebSocket API を使用してリアルタイム メッセージ プッシュを行う方法を紹介します。 WebSocket テクノロジーを使用すると、待ち時間の短縮とリアルタイム パフォーマンスの向上が実現でき、Web アプリケーションにさらなる可能性がもたらされます。この記事の導入により、WebSocket テクノロジについての理解が深まり、実際のプロジェクトで WebSocket テクノロジを使用して、より優れたリアルタイム メッセージ プッシュ効果を実現できるようになると思います。

以上がPHP で WebSocket API を使用してリアルタイム メッセージ プッシュを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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