ホームページ  >  記事  >  PHPフレームワーク  >  ワーカーマンを使用してリアルタイムでメッセージをプッシュおよび受信する方法

ワーカーマンを使用してリアルタイムでメッセージをプッシュおよび受信する方法

王林
王林オリジナル
2023-09-08 13:42:23858ブラウズ

ワーカーマンを使用してリアルタイムでメッセージをプッシュおよび受信する方法

workerman を使用してリアルタイム プッシュを実装し、メッセージを受信する方法

インターネットの急速な発展に伴い、多くの企業にとってリアルタイム メッセージ プッシュが要件になりました。アプリケーション。以前の実装では、通常、サーバーは新しいメッセージがあるかどうかを確認するためにポーリングされてからプッシュされました。この方法は非効率であるだけでなく、サーバーの負荷も増加します。現在、これを実装するより効率的な方法があります。それは、Workerman フレームワークを使用して、メッセージのリアルタイムのプッシュと受信を実現することです。

Workerman は、PHP が長時間の接続を維持できないという問題を解決するために設計された、高性能のイベント駆動型 PHP フレームワークです。 PHP の非同期ノンブロッキング I/O 実装を使用し、多数の同時接続を処理して、リアルタイムのメッセージのプッシュと受信を実現します。

次は、workerman を使用してリアルタイムのメッセージのプッシュと受信を実装するための手順とコード例です。

  1. workerman をインストールします

まず、サーバーワーカーにインストールする必要があります。次のコマンドで、composer を使用してインストールできます。

composer require workerman/workerman
  1. メッセージ プッシュ サーバーの作成

次に、push_server.php という名前の PHP ファイルをメッセージ プッシュとして作成します。サーバ。

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

use WorkermanWorker;

$pusher = new Worker();
$pusher->count = 4;

$pusher->onWorkerStart = function ($pusher) {
    $inner_ws = new Worker('websocket://127.0.0.1:8000');
    
    $inner_ws->onConnect = function ($connection) {
        echo "New client connected
";
    };
    
    $inner_ws->onMessage = function ($connection, $data) use ($pusher) {
        echo "Received message: $data
";
        
        // 接收到消息后,将消息推送给所有在线客户端
        foreach ($pusher->connections as $client) {
            $client->send($data);
        }
    };
    
    $inner_ws->onClose = function ($connection) {
        echo "Client closed
";
    };
    
    Worker::runAll();
};
  1. メッセージ受信サーバーの作成

次に、メッセージ受信サーバーとして、receive_server.php という名前の PHP ファイルを作成します。

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

use WorkermanWorker;

$receiver = new Worker();
$receiver->count = 4;

$receiver->onWorkerStart = function ($receiver) {
    $ws = new Worker('websocket://127.0.0.1:8001');
    
    $ws->onConnect = function ($connection) {
        echo "New client connected
";
    };
    
    $ws->onMessage = function ($connection, $data) {
        echo "Received message: $data
";
        
        // 处理接收到的消息
        // ...
    };
    
    $ws->onClose = function ($connection) {
        echo "Client closed
";
    };
    
    Worker::runAll();
};
  1. サーバーの起動

最後に、コマンド ラインからメッセージ プッシュ サーバーとメッセージ受信サーバーをそれぞれ起動します。

php push_server.php start
php receive_server.php start

この時点で、メッセージのリアルタイムのプッシュと受信が完了します。

実際のアプリケーションでは、ニーズに応じて対応する機能拡張や最適化を行うことができます。たとえば、認証および認可メカニズムを追加して、認証されたユーザーのみがメッセージのプッシュと受信を制限できるようにしたり、メッセージをデータベースに永続化して、オフライン ユーザーがオンラインになった後に未読メッセージを受信できるようにしたりすることもできます。

要約すると、workerman フレームワークを使用することで、効率的なリアルタイムのメッセージのプッシュと受信を実現できます。その非同期かつノンブロッキングの特性により、サーバーは多数の同時接続を処理できるため、メッセージ送信の効率が向上します。この記事が、workerman を理解し、リアルタイムのメッセージのプッシュと受信を実現するために適用するのに役立つことを願っています。

以上がワーカーマンを使用してリアルタイムでメッセージをプッシュおよび受信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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