ホームページ  >  記事  >  バックエンド開発  >  PHP8.0のWebSocketライブラリ

PHP8.0のWebSocketライブラリ

PHPz
PHPzオリジナル
2023-05-14 09:22:351842ブラウズ

インターネットの急速な発展と Web テクノロジーの継続的な更新に伴い、リアルタイム通信機能を実現するために WebSocket テクノロジーを使用する Web アプリケーションがますます増えています。最も一般的に使用される Web 開発言語の 1 つである PHP は、WebSocket のサポートが常に限定的でした。ただし、PHP8.0 バージョンでは、いくつかの新しい変更が加えられています。その中で最も重要なのは、PHP 開発者に、より便利で効率的で信頼性の高いリアルタイム通信ソリューションを提供する新しい WebSocket ライブラリの正式な導入です。この記事では、PHP8.0のWebSocketライブラリについて詳しく紹介します。

1. WebSocket の概要

WebSocket は、Web ブラウザと Web サーバー間の双方向通信を実現するネットワーク技術です。接続が確立されると、ブラウザがリクエストを送信しなくても、サーバーはブラウザにデータをアクティブに送信できます。この特性により、WebSocket はリアルタイム通信、オンライン ゲーム、オンライン チャット、リモート デスクトップなどの分野で広く使用されています。

2. PHP WebSocket ライブラリの歴史

PHP が生まれる前には、PHPoole の php-websocket、Ratchet、ReactPHP、Swoole など、多くの優れた WebSocket ライブラリが誕生しました。これらのライブラリは強力ですが、サードパーティ製であるため、PHP によって正式にサポートおよび保守することができず、使用中に互換性、安定性、セキュリティの問題が発生する可能性があります。

したがって、PHP の Web 開発エコシステムをさらに改善するために、PHP バージョン 7.2 では新しい拡張機能 ext-sockets が導入されました。この拡張機能は生のソケットのサポートを提供し、PHP 開発者がソケットベースの通信を簡単に実装できるようにします。ただし、HTTP プロトコルを手動で処理する必要があることや、接続の切断を検出できないことなど、いくつかの制限があるため、実際のアプリケーションで使用するには依然として一定の困難があります。

最後に、PHP8.0 バージョンでは、PHP は新しい WebSocket ライブラリである ext-sockets アップグレード バージョンを正式に導入しました。この新しいライブラリは、拡張機能の制限を修正し、より多くの機能を追加することで、より優れた WebScoket サポートを提供します。

3. PHP8.0 の新機能

PHP8.0 の新しい WebSocket ライブラリ (ext-sockets2 という名前) では、主に次の機能が追加されます。 RFC 6455 標準に準拠した WebSocket プロトコル

  1. ext-sockets 拡張機能の以前のバージョンとは異なり、ext-sockets2 は RFC 6455 標準に準拠した改良された WebSocket プロトコルを使用します。これは、開発者が標準プロトコルを安全に使用できることを意味し、WebScoket アプリケーションの実装が容易になります。

HTTP ハンドシェイク リクエストを自動的に解析する

  1. 拡張機能の内部では、ext-sockets2 は WebSocket ハンドシェイク リクエストを自動的に解析し、適切な WebSocket フレームを構築します。これにより、開発者はプロトコルの詳細を理解することなく、専用の作成機能を使用してWebSocketサーバーを簡単に作成できます。

バイナリ データのサポート

  1. テキスト データのサポートに加えて、開発者は ext-sockets2 を使用してバイナリ データを処理することもできます。これは、大規模なデータ ストリームを送信する必要があるアプリケーションやバイナリ コンテンツを含むアプリケーションに役立ちます。

PING/PONG のサポート

  1. WebSocket プロトコルでは、サーバーはクライアントの応答時間に基づいて PING/PONG ハートビートを使用する必要がある場合や、クライアントが応答しているかどうかを検出する必要がある場合があります。 online. フレームを使用して接続状態を維持します。 ext-sockets2 ライブラリでは、この機能を簡単に実装できます。

接続の終了のサポート

  1. 場合によっては、サーバーの再起動時やバックグラウンド プログラムの完了後など、サーバーはクライアントとの接続を閉じる必要があります。タスク。 ext-sockets2 では、この関数を非常に便利に実装できます。
4. WebSocket ライブラリのインストールと初期設定

ext-sockets2 を使用する前に、この拡張機能をインストールする必要があります。次のコマンドを使用できます:

pecl install sockets

拡張機能のインストールが完了したら、次の拡張機能を php.ini ファイルに追加する必要があります。

extension=sockets

拡張機能のインストールと構成が完了したら、WebSocket の使用を開始できます。

5. WebSocket ライブラリを使用して簡単なプログラムを作成する

ext-sockets2 を使用して簡単なプログラムを作成する方法を見てみましょう。このプログラムはクライアントからのメッセージをリッスンし、それに応答します。

<?php

$address = '127.0.0.1';
$port = 8080;
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($server, $address, $port);
socket_listen($server);
while (true) {
    $client = socket_accept($server);
    while (true) {
        $input = socket_read($client, 1024);
        if (strlen($input) == 0) {
            socket_close($client);
            break;
        }
        echo $input . PHP_EOL;
        socket_write($client, $input);
    }
}

このプログラムでは、socket_create() を使用してソケット サーバーを作成し、socket_bind() を使用してそれを指定された IP アドレスとポートにバインドします。次に、socket_listen() を使用してクライアント接続の待機を開始します。最初の while ループはクライアントからのリクエストをリッスンするために使用され、2 番目の while ループは接続されたクライアントからのメッセージを処理するために使用されます。

プログラムでは、socket_read() を使用してクライアントから送信されたメッセージを受信し、socket_write() を使用してこれらのメッセージを応答としてクライアントに返します。

6. 概要

WebSocket テクノロジは、インターネット アプリケーション開発でますます使用されています。 PHP8.0 バージョンでは、PHP によって正式に導入されたまったく新しい WebSocket ライブラリである ext-sockets2 も登場し、多くの新機能をもたらし、PHP 開発者が WebSocket を実装する際の利便性、効率性、信頼性が向上しました。古い W​​ebSocket ライブラリと新しい WebSocket ライブラリのどちらかを選択する場合は、リアルタイム通信の増大するニーズにさらに適切に対応するために、新しい拡張機能を試したほうがよいでしょう。

以上がPHP8.0のWebSocketライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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