ホームページ > バックエンド開発 > PHPチュートリアル > リアルタイム注文処理機能を実装するためのPHP Websocket開発ガイド

リアルタイム注文処理機能を実装するためのPHP Websocket開発ガイド

王林
リリース: 2023-12-02 13:48:02
オリジナル
764 人が閲覧しました

PHP Websocket开发指南,实现实时订单处理功能

PHP Websocket リアルタイム注文処理機能開発ガイド
Websocket は、Web アプリケーションとサーバー間のリアルタイム双方向通信のためのプロトコルです。従来の HTTP リクエストと比較して、WebSocket は永続的な接続をより効率的に確立して、リアルタイムのデータ送信を実現できます。今回はPHPを使ったWebsocket開発とリアルタイム注文処理機能の実装方法を紹介します。

まず、いくつかの基本的な概念と原則を理解する必要があります。 WebSocket プロトコルは、特別な HTTP ハンドシェイク プロセスを使用して永続的な接続を確立します。その後、クライアントとサーバーは、この接続を通じて双方向のデータ送信を実行できます。

PHP では、Ratchet ライブラリを使用して WebSocket 機能を実装できます。 Ratchet は、WebSocket サーバーを迅速に構築できるようにするための使いやすい API セットを提供するオープン ソースの PHP ソケット ライブラリです。

まず、Ratchet ライブラリをインストールする必要があります。 Ratchet は Composer を通じて簡単にインストールできます。コマンド ライン ウィンドウを開き、PHP プロジェクト ディレクトリに入り、次のコマンドを実行します:

composer require cboden/ratchet
ログイン後にコピー

インストールが完了したら、コードの記述を開始できます。まず、server.php という名前の PHP ファイルを作成し、その中に Ratchet ライブラリを導入します。

<?php

require 'vendor/autoload.php';

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;
use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;
ログイン後にコピー

次のコードでは、OrderHandler's という名前のファイルを作成します。 MessageComponentInterface インターフェイスを実装するクラス。このクラスは、クライアントから送信されたメッセージの処理を担当します。

class OrderHandler implements MessageComponentInterface
{
    protected $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) {
            $client->send($msg);
        }
    }

    public function onClose(ConnectionInterface $conn)
    {
        // 客户端断开连接时执行的代码
        $this->clients->detach($conn);
    }

    public function onError(ConnectionInterface $conn, Exception $e)
    {
        // 发生错误时执行的代码
        echo 'Error: ' . $e->getMessage() . PHP_EOL;

        $conn->close();
    }
}
ログイン後にコピー

上記のコードでは、onOpen メソッドを通じて、クライアント接続が成功したときに対応するコードを実行できます。 onMessage メソッドでは、クライアントから送信されたメッセージを処理し、注文処理ロジックを実装できます。 onClose メソッドを使用すると、クライアントが切断されたときに対応するコードを実行できます。 onError メソッドは、発生したエラーを処理するために使用されます。

最後に、WebSocket サーバーを作成し、ポート番号を指定する必要があります。 server.php ファイルの最後に、次のコードを追加します。

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

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

上記のコードでは、IoServer クラスを通じて WebSocket サーバーを作成し、次のように指定しました。 HttpServer は HTTP リクエストを処理し、WsServer は WebSocket プロトコルを処理します。 OrderHandler クラスは、特定の注文ロジックの処理を担当します。サーバーはポート 8080 で待機します。

server.php ファイルを保存して実行すると、WebSocket サーバーが開始されます。次に、サーバーに接続するためにクライアント側に対応するコードを追加する必要があります。

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Order</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(function () {
            var conn = new WebSocket('ws://localhost:8080');

            conn.onopen = function (event) {
                console.log('Connected');
            };

            conn.onmessage = function (event) {
                var data = JSON.parse(event.data);
                console.log('Received:', data);
                // 在这里进行订单处理后的操作
            };

            conn.onclose = function (event) {
                console.log('Disconnected');
            };
        });
    </script>
</head>
<body>
</body>
</html>
ログイン後にコピー

上記のコードでは、JavaScript の WebSocket オブジェクトを使用してサーバーとの接続を確立します。対応するイベント リスニング関数を通じて、サーバーから送信されたメッセージを処理し、conn.onmessage 関数で注文後の処理操作を実行できます。

これまでに、簡単なリアルタイム注文処理機能が完成しました。新しい注文が生成されると、サーバーは接続されているすべてのクライアントに注文情報を送信し、クライアントはさらなる処理を実行できます。

この記事の導入部を通じて、WebSocket 開発に PHP と Ratchet ライブラリを使用するのが非常に簡単であることがわかります。 WebSocket を使用すると、リアルタイムの双方向通信を実現し、Web アプリケーションによりインタラクティブなエクスペリエンスをもたらすことができます。この記事が、皆様が PHP WebSocket 開発を理解して学習し、リアルタイム注文処理機能を実装するのに役立つことを願っています。

以上がリアルタイム注文処理機能を実装するためのPHP Websocket開発ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート