ホームページ >バックエンド開発 >PHPチュートリアル >PHP で WebSocket API を使用してリアルタイム Web アプリケーションを実装する方法

PHP で WebSocket API を使用してリアルタイム Web アプリケーションを実装する方法

王林
王林オリジナル
2023-06-17 13:04:401592ブラウズ

インターネット技術の発展に伴い、リアルタイム Web アプリケーションはますます一般的な開発方法になりました。全二重通信プロトコルとしての WebSocket は、リアルタイム Web アプリケーションを実装するための重要な方法となっており、PHP は開発者の使用を容易にする WebSocket API も提供しています。この記事では、PHP で WebSocket API を使用してリアルタイム Web アプリケーションを実装する方法を紹介します。

1. WebSocket の概要

WebSocket は、単一の TCP 接続上で全二重通信を提供するプロトコルで、Web アプリケーションがクライアントとサーバー間でリアルタイム データを通信できるようにします。 HTTP プロトコルと比較して、WebSocket は遅延が短く、データ送信時のハンドシェイクが少ないため、よりリアルタイムな Web アプリケーションが可能になります。

2. PHP で WebSocket API を使用してリアルタイム Web アプリケーションを実装する

  1. WebSocket のインストール

PHP WebSocket は ReactPHP に基づいているため、以下が必要です最初に ReactPHP をインストールするには :

composer require react/socket:^1.11.0 react/event-loop:^1.1.0
  1. WebSocket サービスの作成

以下は簡単な PHP WebSocket サービス コードです:

use ReactSocketConnectionInterface;
use ReactSocketServer;

require __DIR__ . '/vendor/autoload.php';

$loop = ReactEventLoopFactory::create();
$socket = new Server('localhost:8080', $loop);

$clients = new SplObjectStorage();
$socket->on('connection', function (ConnectionInterface $conn) use ($clients) {
    $clients->attach($conn);
    $conn->on('data', function ($data) use ($clients, $conn) {
        foreach ($clients as $client) {
            if ($conn !== $client) {
                $client->write($data);
            }
        }
    });
    $conn->on('close', function () use ($clients, $conn) {
        $clients->detach($conn);
    });
});

$loop->run();

このコードは WebSocket サービスを作成しますこれをリッスンするのはマシンのポート 8080 です。クライアントが接続したら、クライアント オブジェクトを SplObjectStorage オブジェクトに保存します。データ送信がある場合は、送信者以外の他のクライアントにデータを送信します。クライアントが切断したら、SplObjectStorage からクライアント オブジェクトを削除します。

  1. WebSocket サービスの実行

上記のコードを server.php ファイルとして保存し、コマンド php server.php## を実行します。 # WebSocket サーブを開始します。この時点で、WebSocket サービスはすでにローカル ポート 8080 で実行されており、クライアント接続を受け入れることができます。

    WebSocket クライアントの作成
以下は、単純な PHP WebSocket クライアント コードです:

use ReactEventLoopFactory;
use ReactSocketConnector;
use ReactSocketConnectionInterface;

require __DIR__ . '/vendor/autoload.php';

$loop = Factory::create();
$connector = new Connector($loop);

$connector->connect('tcp://127.0.0.1:8080')->then(function (ConnectionInterface $conn) use ($loop) {
    $conn->on('data', function ($data) {
        echo $data;
    });
    $loop->addReadStream(STDIN, function () use ($conn) {
        $line = fgets(STDIN);
        $conn->write($line);
    });
}, function (Exception $e) {
    echo 'Could not connect: ' . $e->getMessage() . PHP_EOL;
});

$loop->run();

このコードは WebSocket クライアントを作成し、WebSocket クライアントのポート 8080 に接続します。この機械。データ送信がある場合は、コンソールにデータが出力されます。コンソール入力を読み取るときに、入力を WebSocket サーバーに送信します。

    WebSocket クライアントの実行
上記のコードを

client.php ファイルとして保存し、コマンド php client.php## を実行します。 # WebSocket クライアントを起動します。この時点で、WebSocket クライアントはローカル WebSocket サーバーに接続しました。

WebSocket 通信のテスト
  1. コンソールにデータを入力すると、データが WebSocket サーバーに送信され、サーバーは送信者以外の他のユーザーにデータを送り返します。クライアント。複数のコンソールを開いて
php client.php

を実行して、リアルタイム通信の効果をテストできます。 3. 概要

WebSocket API は、リアルタイム Web アプリケーションを簡単に実装できる WebSocket を PHP に実装する方法を提供します。この記事では、PHP で WebSocket API を使用してリアルタイム Web アプリケーションを実装する方法を紹介し、WebSocket の概要、WebSocket サービスの作成、WebSocket クライアントの作成、WebSocket 通信のテストについて説明します。

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

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