WebSocket Chat

このシンプルなインターフェイスを使用すると、メッセージを入力して WebSocket サーバーに送信できます。接続されているすべてのクライアントはメッセージを受信して​​表示します。

ステップ 5: WebSocket 接続をテストする

  1. php start_server.php.
  2. を実行して、WebSocket サーバーを起動します。
  3. ブラウザでindex.htmlを開きます。
  4. 別のブラウザまたはタブで同じページを開いて、複数のクライアントをシミュレートします。

1 つのクライアントからメッセージを送信すると、接続されているすべてのクライアントのブラウザにメッセージが表示されます。


PHP で WebSocket を使用する利点


PHP での WebSocket の使用例


結論

WebSocket は、クライアントとサーバー間のリアルタイムの全二重通信のための強力なソリューションを提供し、チャット システム、ライブ通知、その他のリアルタイム アプリケーションに最適です。 Ratchet などのライブラリで PHP を使用すると、WebSocket サーバーを簡単にセットアップし、それをアプリケーションに統合して、ユーザー エンゲージメントと応答性を向上させることができます。

","image":"http://www.luping.net/uploads/20240930/172769436566fa861d5b103.jpg","datePublished":"2024-11-06T15:21:16+08:00","dateModified":"2024-11-06T15:21:16+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP の WebSocket を理解する

PHP の WebSocket を理解する

2024 年 11 月 6 日に公開
ブラウズ:441

Understanding WebSockets in PHP

WebSocket は、単一の TCP 接続上でリアルタイムの全二重通信チャネルを提供します。クライアントがサーバーにリクエストを送信して応答を待つ HTTP とは異なり、WebSocket を使用すると、複数のリクエストを必要とせずにクライアントとサーバー間の継続的な通信が可能になります。これは、チャット アプリケーション、ライブ通知、オンライン ゲームなど、リアルタイムの更新が必要なアプリケーションに最適です。

このガイドでは、WebSocket、WebSocket の仕組み、PHP での実装方法について説明します。


WebSocket とは?

WebSocket により、Web ブラウザ (またはその他のクライアント) とサーバー間の対話型通信が可能になります。 WebSocket の重要な側面は次のとおりです:

  1. 全二重通信: クライアントとサーバーの両方がいつでも相互にメッセージを送信できるため、従来の HTTP ポーリングよりも接続が効率的になります。
  2. 永続的な接続: WebSocket 接続は、一度確立されると、クライアントまたはサーバーによって明示的に閉じられるまで開いたままになります。
  3. 低遅延: WebSocket ではリクエストごとに新しい接続を開く必要がなくなるため、遅延が減少し、リアルタイム通信に最適です。

WebSocket の仕組み

  1. ハンドシェイク: 通信は HTTP リクエストから始まります。クライアントは、接続を HTTP から WebSocket に切り替えるために、Upgrade ヘッダーを含む HTTP リクエストを送信します。
  2. 接続が確立されました: サーバーがハンドシェイクを確認すると、接続が確立され、クライアントとサーバーの両方がメッセージの送受信を開始できるようになります。
  3. メッセージング: データはフレームを通じて送信されます。フレームは軽量で、HTTP ヘッダーのオーバーヘッドなしで送受信できます。
  4. 接続終了: クライアントまたはサーバーのいずれかが接続を終了できます。

WebSocket を使用する場合

  • リアルタイム アプリケーション: チャット アプリケーション、ライブ通知、共同編集など。
  • ゲーム: 頻繁なアップデートが必要なマルチプレイヤー オンライン ゲーム用。
  • ライブ フィード: 株価、スポーツのスコア、IoT デバイスからのリアルタイム データをストリーミングします。
  • コラボレーション ツール: 複数のユーザーがリアルタイムで更新情報を確認する必要がある Google ドキュメントなどのアプリ用。

PHP での WebSocket の実装

PHP で WebSocket を実装するには、Ratchet などのライブラリを使用できます。これは、WebSocket を使用したリアルタイムの双方向通信用に特別に設計された PHP ライブラリです。


Ratchet を使用した段階的な WebSocket 実装

ステップ 1: Composer 経由で Ratchet をインストールする

まず、Ratchet ライブラリをインストールする必要があります。 Composer がインストールされていると仮定すると、次のコマンドを実行できます:

composer require cboden/ratchet

ステップ 2: PHP で WebSocket サーバーを作成する

接続とメッセージを処理する単純な WebSocket サーバーを作成しましょう。

  1. WebSocketServer.php で WebSocket サーバー クラスを作成します:
clients = new \SplObjectStorage;
    }

    // Called when a new client connects
    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "New connection: ({$conn->resourceId})\n";
    }

    // Called when a client sends a message
    public function onMessage(ConnectionInterface $from, $msg) {
        echo "New message: $msg\n";

        foreach ($this->clients as $client) {
            if ($from !== $client) {
                // Send the message to everyone except the sender
                $client->send($msg);
            }
        }
    }

    // Called when a connection is closed
    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
        echo "Connection closed: ({$conn->resourceId})\n";
    }

    // Called if an error occurs
    public function onError(ConnectionInterface $conn, \Exception $e) {
        echo "Error: {$e->getMessage()}\n";
        $conn->close();
    }
}

このクラスは、新しい接続、受信メッセージ、閉じられた接続、エラーを処理するメソッドを定義する Ratchet の MessageComponentInterface を実装します。

ステップ 3: WebSocket サーバーの実行

WebSocket サーバーを起動する新しい PHP スクリプトを作成します (例: start_server.php.
)

run();

次のスクリプトを実行するとサーバーを起動できます:

php start_server.php

サーバーは ws://localhost:8080 で実行されます。

ステップ 4: WebSocket サーバーに接続するフロントエンドを作成する

それでは、jQueryJavaScript を使用して HTML ファイルを作成して、WebSocket サーバーに接続しましょう。

  1. HTML ファイルを作成しますindex.html:


    WebSocket Chat

WebSocket Chat

このシンプルなインターフェイスを使用すると、メッセージを入力して WebSocket サーバーに送信できます。接続されているすべてのクライアントはメッセージを受信して​​表示します。

ステップ 5: WebSocket 接続をテストする

  1. php start_server.php.
  2. を実行して、WebSocket サーバーを起動します。
  3. ブラウザでindex.htmlを開きます。
  4. 別のブラウザまたはタブで同じページを開いて、複数のクライアントをシミュレートします。

1 つのクライアントからメッセージを送信すると、接続されているすべてのクライアントのブラウザにメッセージが表示されます。


PHP で WebSocket を使用する利点

  • リアルタイム更新: WebSocket は、HTTP ポーリングのオーバーヘッドなしでリアルタイム更新を提供します。
  • 待ち時間の短縮: 接続は開いたままであるため、メッセージをすぐに送信でき、待ち時間が短縮されます。
  • 双方向通信: 通信がクライアントによって開始される従来の HTTP とは異なり、サーバーとクライアントの両方が同時にメッセージを相互に送信できます。

PHP での WebSocket の使用例

  • チャット アプリケーション: WebSocket は、メッセージをすべてのユーザーに即座に送信する必要があるリアルタイム チャット アプリケーションに最適です。
  • ライブ通知: ライブ通知をプッシュする必要があるアプリ用 (ソーシャル メディア、株価など)。
  • リアルタイム コラボレーション ツール: WebSocket により、ライブ ドキュメント編集などのリアルタイム コラボレーションが可能になります。
  • オンライン ゲーム: マルチプレイヤー オンライン ゲームは、WebSocket の低遅延通信の恩恵を受けます。

結論

WebSocket は、クライアントとサーバー間のリアルタイムの全二重通信のための強力なソリューションを提供し、チャット システム、ライブ通知、その他のリアルタイム アプリケーションに最適です。 Ratchet などのライブラリで PHP を使用すると、WebSocket サーバーを簡単にセットアップし、それをアプリケーションに統合して、ユーザー エンゲージメントと応答性を向上させることができます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/mdarifulhaque/ Understanding-websockets-in-php-2cli?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3