ホームページ  >  記事  >  PHPフレームワーク  >  Workerman の実践: 高パフォーマンスなオンライン チャット ルームの作成

Workerman の実践: 高パフォーマンスなオンライン チャット ルームの作成

WBOY
WBOYオリジナル
2023-08-06 12:29:061476ブラウズ

Workerman の実践的な応用: 高性能オンライン チャット ルームの作成

はじめに:
今日のインターネット時代において、リアルタイムのオンライン チャットは人々の生活に欠かせないものになっています。高性能でリアルタイムのインタラクションに対するユーザーのニーズを満たすには、適切な通信フレームワークを選択することが重要になります。 Workerman は、高性能 PHP 非同期ネットワーク通信フレームワークとして、この需要を満たすことができます。この記事では、Workerman を使用して高パフォーマンスのオンライン チャット ルームを構築する方法とコード例を紹介します。

1. 環境の準備
開始する前に、環境が次の条件を満たしていることを確認してください:

  1. PHP バージョンは 5.3 以上であり、pcntl と posix拡張機能をインストールする必要があります。
  2. Workerman とその依存ライブラリ ファイルのインストールに使用される Composer をインストールします。

2. チャット ルーム サーバーを作成する
まず、チャット ルーム サーバーを作成する必要があります。 「chat_server.php」という名前のファイルを作成し、次のコードを追加します。

<?php
require_once __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;

$ws_worker = new Worker("websocket://0.0.0.0:8000");

$ws_worker->count = 4; // 设置启动4个进程

$ws_worker->onConnect = function ($connection) {
    echo "有新用户连接
";
};

$ws_worker->onMessage = function ($connection, $data) use ($ws_worker) {
    foreach ($ws_worker->connections as $clientConnection) {
        $clientConnection->send($data); // 将收到的消息发送给所有连接的客户端
    }
};

$ws_worker->onClose = function ($connection) {
    echo "有用户断开连接
";
};

Worker::runAll();

上記のコードを通じて、WebSocket サーバーを作成し、ポート 8000 をリッスンします。新規ユーザーが接続した場合はバックグラウンドに「新規ユーザーが接続しました」、ユーザーが切断した場合はバックグラウンドに「ユーザーが切断しました」と出力されます。 onMessage コールバック関数では、受信したメッセージを接続されているすべてのクライアントに送信します。

3. チャット ルーム クライアントの作成
次に、単純なチャット ルーム クライアントを作成する必要があります。 「chat_client.html」という名前のファイルを作成し、次のコードを追加します。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>在线聊天室</title>
    <style>
        #message {
            height: 500px;
            border: 1px solid #ccc;
            padding: 10px;
            overflow-y: scroll;
        }

        #message p {
            margin: 5px 0;
        }

        #input {
            margin-top: 10px;
        }
    </style>
</head>
<body>
<div id="message"></div>
<input type="text" id="input" placeholder="请输入消息">
<button onclick="send()">发送</button>

<script>
    var ws = new WebSocket("ws://localhost:8000");

    ws.onopen = function () {
        console.log("连接成功");
    };

    ws.onmessage = function (evt) {
        var message = document.getElementById("message");
        message.innerHTML += "<p>" + evt.data + "</p>";
        message.scrollTop = message.scrollHeight; // 滚动到底部
    };

    ws.onclose = function () {
        console.log("连接关闭");
    };

    function send() {
        var input = document.getElementById("input");
        var message = input.value;
        ws.send(message);
        input.value = "";
    }
</script>
</body>
</html>

上記のコードを使用して、単純なチャット ルーム クライアント インターフェイスを作成しました。ユーザーがメッセージを入力して送信ボタンをクリックすると、メッセージがサーバーに送信されます。サーバーがメッセージを受信すると、そのメッセージは onmessage コールバック関数のメッセージ領域に表示され、自動的に下までスクロールします。

4. チャット ルームをテストします
コマンド ラインで次のコマンドを実行してサーバーを起動します:

php chat_server.php start

次に、2 つ以上のブラウザ ウィンドウを開いて、「chat_client.html」にアクセスします。ファイル。さまざまなブラウザ ウィンドウの入力ボックスにメッセージを入力し、送信ボタンをクリックすると、すべてのウィンドウに同じメッセージが表示されます。このようにして、高パフォーマンスのオンライン チャット ルームを作成することに成功しました。

概要:
この記事では、Workerman を使用して高パフォーマンスのオンライン チャット ルームを構築する方法を紹介し、対応するコード例を示します。 Workerman を使用すると、高同時実行性、低遅延のリアルタイム チャット機能を簡単に実装できます。この記事がWorkermanの実践に役立つことを願っています。

以上がWorkerman の実践: 高パフォーマンスなオンライン チャット ルームの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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