ホームページ  >  記事  >  バックエンド開発  >  初心者から熟練者まで: PHP WebSocket の開発と実装の完全ガイド

初心者から熟練者まで: PHP WebSocket の開発と実装の完全ガイド

WBOY
WBOYオリジナル
2023-09-11 13:16:41684ブラウズ

从入门到精通:PHP WebSocket开发实现功能的完整指南

初心者から熟練者まで: PHP WebSocket 開発および実装機能の完全ガイド

はじめに:
WebSocket は、Web アプリケーションを可能にする新しいネットワーク通信プロトコルです。このプログラムは、従来の HTTP 要求/応答モデルに依存せずに、サーバーとのリアルタイムの双方向通信を実行します。 PHP は、高性能のリアルタイム Web アプリケーションの開発に使用できる、人気のあるサーバー側プログラミング言語です。この記事では、PHP WebSocket 開発の基本的な知識とスキルを紹介し、WebSocket 開発の開始から習得まで読者を支援する完全なガイドを提供します。

1. WebSocket プロトコルを理解する
まず、WebSocket プロトコルの基本原理と特性を理解する必要があります。 WebSocket は全二重通信を使用するため、サーバーがアクティブにデータをクライアントにプッシュできるようになり、より高いリアルタイム通信を実現できます。従来の HTTP プロトコルと比較して、WebSocket は接続確立後の接続を長時間維持するため、通信のたびに接続を再確立するオーバーヘッドを回避します。

2. WebSocket サーバーを構築する
PHP WebSocket 開発を開始する前に、WebSocket サーバーを構築する必要があります。 PHP は WebSocket をネイティブにサポートしていませんが、サードパーティのライブラリを使用して WebSocket 機能を実装できます。一般的に使用される WebSocket ライブラリには、Ratchet や Swoole などがあります。この記事ではラチェットを例にして説明します。

まず、Composer を介して Ratchet をインストールする必要があります。コマンド ラインで次のコマンドを実行します。

$ composer require cboden/ratchet

次に、server.php などの PHP スクリプトを作成します。

<?php

require 'vendor/autoload.php';

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;
use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;

class MyChat implements MessageComponentInterface {
    public function onOpen(ConnectionInterface $conn) {
        // 新连接建立时触发
    }

    public function onMessage(ConnectionInterface $from, $msg) {
        // 收到消息时触发
    }

    public function onClose(ConnectionInterface $conn) {
        // 连接关闭时触发
    }

    public function onError(ConnectionInterface $conn, Exception $e) {
        // 发生错误时触发
    }
}

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

$server->run();

上記のコードにより、# という名前のファイルが作成されます。 ## MyChat のクラスであり、MessageComponentInterface インターフェイスを実装します。 MyChat クラスでは、接続の確立、メッセージの受信、接続の終了などの操作を処理する特定のロジックを定義できます。

最終コードでは、Ratchet が提供するクラスを通じて WebSocket サーバーを作成します。構成ファイルで定義されているポート番号は 8080 ですが、必要に応じて変更できます。

3. WebSocket 関数の実装

サーバーの構築が完了したら、特定の WebSocket 関数の実装を開始できます。
MyChat クラスでは、ニーズに応じてさまざまな操作を定義できます。

たとえば、他のクライアントにウェルカム メッセージを送信するなど、

onOpen メソッドで新しい接続を確立するときにロジックを実装できます。 #onMessageメソッドでは、他のクライアントにメッセージをブロードキャストするなど、メッセージを受信した後のロジックを実装できます。

public function onOpen(ConnectionInterface $conn) {
    echo "New connection! ({$conn->resourceId})
";
    $conn->send("Welcome! ({$conn->resourceId})");

    // 向其他客户端发送消息
    foreach ($this->clients as $client) {
        if ($conn !== $client) {
            $client->send("New connection! ({$conn->resourceId})");
        }
    }

    $this->clients->attach($conn);
}

onClose メソッドでは、接続が閉じられたときのロジック。他のクライアントに Leave メッセージを送信するなど:

public function onMessage(ConnectionInterface $from, $msg) {
    echo "Received message: {$msg}
";

    // 向其他客户端广播消息
    foreach ($this->clients as $client) {
        if ($from !== $client) {
            $client->send("Message from {$from->resourceId}: {$msg}");
        }
    }
}

上記のメソッドを通じて、基本的な WebSocket 機能を実装できます。特定のニーズに応じて、onError メソッドでエラー状態を処理することもできます。

4. WebSocket プロトコルの使用サーバーの構築と機能の実装が完了したら、WebSocket プロトコルを使用して通信できるようになります。

クライアント側では、JavaScript を使用して WebSocket オブジェクトを作成し、サーバーとの接続を確立できます。

public function onClose(ConnectionInterface $conn) {
    echo "Connection {$conn->resourceId} has disconnected
";

    // 向其他客户端发送消息
    foreach ($this->clients as $client) {
        if ($conn !== $client) {
            $client->send("Connection {$conn->resourceId} has disconnected");
        }
    }

    $this->clients->detach($conn);
}

サーバー側では、Ratchet が提供するメソッドを使用して、接続とメッセージ受信 :

var conn = new WebSocket('ws://localhost:8080');

conn.onopen = function() {
    console.log('Connected');
    conn.send('Hello, server!');
};

conn.onmessage = function(e) {
    console.log('Received message: ' + e.data);
};

conn.onclose = function() {
    console.log('Connection closed');
};

conn.onerror = function() {
    console.log('Error occurred');
};

上記のコードにより、基本的な双方向通信機能を実装し、よりリアルタイム性の高い Web アプリケーションを実現できます。

概要:

この記事では、PHP WebSocket 開発の基本的な知識とスキルを紹介し、入門から習得までの完全なガイドを提供します。 WebSocket プロトコルを理解し、WebSocket サーバーを構築し、WebSocket 機能を実装することで、すぐに開発を開始し、高パフォーマンスのリアルタイム Web アプリケーションを開発できます。この記事が、読者が WebSocket 開発の初心者から熟練者になり、実際のプロジェクトでより大きな役割を果たすのに役立つことを願っています。

以上が初心者から熟練者まで: PHP WebSocket の開発と実装の完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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