PHPでWebSocketを使用する方法

Jun 11, 2023 pm 06:09 PM
php 使用 websocket

ネットワーク技術の発展に伴い、ブラウザとサーバーの間にリアルタイム通信チャネルを確立して接続を維持できる WebSocket (Web ソケット) が一般的なプロトコルになりました。このプロトコルは、Web アプリケーションでリアルタイム通信機能を実現する上で大きな役割を果たします。

PHP 開発の分野では、WebSocket がますます広く使用されています。この記事では、PHPでWebSocketを使う方法を紹介します。

  1. WebSocket ライブラリのインストール

まず、PHP で WebSocket 関数を簡単に実装するには、PHP WebSocket ライブラリを使用する必要があります。現在、最も人気のある PHP WebSocket ライブラリは、Ratchet と PHP WebSocket です。

ここでは、ReactPHP ライブラリを使用して非同期イベント駆動型 PHP を実装する Ratchet を使用します。これは、他のフレームワークと完全に互換性があり、柔軟性と拡張性を備えています。

Ratchet は Composer を使用してインストールおよび管理されるため、始める前に、まず Composer をインストールする必要があります。

Composer はここからダウンロードできます: https://getcomposer.org/

Composer を使用して Ratchet をインストールします:

composer require cboden/ratchet
ログイン後にコピー
  1. PHP WebSocket サーバーを作成します

この例では、単純なチャット ルームを実装し、Ratchet を使用して WebSocket サーバーを作成します。実装手順は次のとおりです:

a. WebSocket サーバーの作成

use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;

require dirname(__DIR__) . '/vendor/autoload.php';

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);

$server->run();
ログイン後にコピー

ここでは、最初に Ratchet ライブラリが導入され、次に WebSocket サーバーが作成されます。 HTTP および WebSocket プロトコルのサポートをそれぞれ指定し、それらを Chat クラスに渡します (Chat クラスがクライアント接続要求の処理に使用されることは後で説明します)。

ここではポート 8080 をリッスンします。

b. チャット ルームを作成する

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;

class Chat implements MessageComponentInterface
{
    public $clients;

    public function __construct()
    {
        $this->clients = new SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn)
    {
        $this->clients->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        foreach ($this->clients as $client) {
            if ($client !== $from) {
                $client->send($msg);
            }
        }
    }

    public function onClose(ConnectionInterface $conn)
    {
        $this->clients->detach($conn);
    }

    public function onError(ConnectionInterface $conn, Exception $e)
    {
        $conn->close();
    }
}
ログイン後にコピー

ここでは、MessageComponentInterface インターフェイスを実装する Chat という名前のクラスを作成しました。このインターフェイスは、さまざまな接続状態で WebSocket サーバーによって実行される操作を定義します。

具体的には、コンストラクターでクライアント変数を宣言しました。これは、接続されたクライアントを格納する SplObjectStorage オブジェクトです。 onOpen メソッドでは、接続オブジェクトがこの変数に割り当てられます。

クライアントからメッセージがある場合、onMessage メソッドを通じてメッセージをブロードキャストし、接続ごとに受信します。

onClose メソッドでは、接続オブジェクトが変数から削除されます。エラーが発生し、クライアント接続を処理できない場合は、onError 関数が呼び出されます。

  1. クライアント側の JavaScript コードを作成する

次に、WebSocket サーバーに接続するためのクライアント側の JavaScript コードが必要です。

let socket = new WebSocket('ws://localhost:8080');
socket.onopen = function(event) {
  console.log('WebSocket连接已建立');
};

socket.onmessage = function(event) {
  console.log('收到消息:' + event.data);
};
ログイン後にコピー

ここでは、WebSocket オブジェクトの API を直接使用して、サーバーに接続し、メッセージを送受信します。

  1. WebSocket サーバーの実行

上記の手順を完了すると、WebSocket サーバーが正常に作成されました。次に、コマンド ラインからサーバーを実行します。

php server.php
ログイン後にコピー

コマンド ラインからサーバーを起動すると、次のような結果が表示されるはずです。

2019-03-22 11:46:55 WebSocketServer: Listening on 0.0.0.0:8080
2019-03-22 11:52:50 WebSocketServer: Opened connection to http://localhost:54616
ログイン後にコピー

は、WebSocket サービスが開始されたことを示します。成功し、ポート 8080 でリッスンします。

  1. WebSocket 接続のテスト

最後に、ブラウザを開いて http://localhost/chat.html にアクセスすると、ブラウザが WebSocket に接続して参加していることがわかります。サーバ。

let socket = new WebSocket('ws://localhost:8080');
socket.onopen = function(event) {
  console.log('WebSocket连接已建立');
  socket.send('欢迎加入聊天室');
};

socket.onmessage = function(event) {
  console.log('收到消息:' + event.data);
};
ログイン後にコピー

ここでは、メッセージをサーバーに送信し、サーバー メッセージの受信時にコンソールに記録します。

テスト Web ページを実行すると、コンソールに次のような出力が表示されます。

WebSocket已连接
WebSocket收到消息:欢迎加入聊天室
ログイン後にコピー

これで、PHP で WebSocket が正常に使用され、簡単なチャット ルームが作成されました。このチュートリアルがお役に立てば幸いです。

以上がPHPでWebSocketを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles