Workerman は、リアルタイム チャット、メッセージ プッシュ、その他のシナリオで広く使用されている高性能 PHP ソケット フレームワークです。 Workerman のドキュメントでは、複数のメッセージ プッシュ実装メソッドが提供されています。この記事では、これらの方法の 1 つを詳細に紹介し、具体的なコード例を示します。
まず、メッセージのプッシュに Workerman を使用する前に、Workerman をインストールして構成する必要があります。 Workerman は Composer を通じてインストールすることも、GitHub からソース コードを直接ダウンロードすることもできます。インストールと設定の詳細な手順については、Workerman の公式ドキュメントを参照してください。
メッセージ プッシュを実装するには、主に 2 つの方法があります。GatewayWorker を使用する方法と、Workerman のメッセージ キューを使用する方法です。ここでは、メッセージのプッシュに GatewayWorker を使用することを選択します。
GatewayWorker は Workerman をベースに開発された拡張コンポーネントであり、主に WebSocket プロトコルのメッセージ プッシュを処理するために使用されます。 GatewayWorkerを通じて、リアルタイムチャットやメッセージプッシュなどの機能を簡単に実装できます。
まず、クライアント接続とメッセージ プッシュを処理するために GatewayWorker の Worker クラスを定義する必要があります。コード例は次のとおりです。
use GatewayWorkerGateway; use WorkermanWorker; // 创建一个Worker监听2346端口,使用websocket协议通讯 $worker = new Worker('websocket://0.0.0.0:2346'); // 设置进程数量 $worker->count = 4; // 设置Worker名称 $worker->name = 'MessagePushWorker'; // 注册Gateway对象到Worker对象上 Gateway::$registerAddress = '127.0.0.1:1238'; $worker->onWorkerStart = function ($worker) { Gateway::registerGame($worker); }; // 客户端连接时触发 $worker->onConnect = function ($connection) { echo "Client connected "; }; // 客户端断开连接时触发 $worker->onClose = function ($connection) { echo "Client closed "; }; // 接收到客户端消息时触发 $worker->onMessage = function ($connection, $data) { echo "Receive message: $data "; // 处理消息推送逻辑 Gateway::sendToAll($data); }; // 启动Worker Worker::runAll();
上記のコードでは、ポート 2346 でリッスンする WebSocket Worker オブジェクトを作成しました。メッセージの接続、終了、受信のコールバック関数では、関連するビジネス ロジックを処理できます。
メッセージ プッシュのコールバック関数では、Gateway::sendToAll() メソッドを呼び出して、受信したメッセージをすべてのクライアントにプッシュします。 Gateway::$registerAddress 属性は、ゲートウェイ登録アドレスの設定に使用されます。GatewayWorker でゲートウェイ プロセスを開始して、クライアント接続とメッセージ配布を具体的に管理できます。
次に、上記の WebSocket サービスに接続し、プッシュされたメッセージを受信するためのクライアント コードを記述する必要があります。コード例は次のとおりです。
var ws = new WebSocket("ws://127.0.0.1:2346"); ws.onopen = function () { console.log('Connected'); } ws.onmessage = function (e) { console.log('Received: ' + e.data); } ws.onclose = function () { console.log("Connection closed"); } ws.onerror = function (error) { console.log('Error: ' + error); }
クライアント コードでは、WebSocket オブジェクトを作成し、WebSocket サービスの 2346 ポートに接続します。 onmessage イベントをリッスンすることで、サーバーによってプッシュされたメッセージを受信できます。
上記は、GatewayWorker を使用してメッセージ プッシュを実装する具体的なメソッドとコード例です。クライアント接続とメッセージのプッシュを処理する Worker クラスのコールバック関数を定義し、クライアント コードで接続とメッセージの受信を行うことで、メッセージ プッシュ機能を簡単に実装できます。もちろん、これは実装方法の 1 つであり、実際のアプリケーションでは必要に応じて他の方法を選択することができます。
この記事が、Workerman ドキュメントのメッセージ プッシュの実装方法を理解し、リアルタイム チャット、メッセージ プッシュ、その他の機能の開発をすぐに始めるのに役立つことを願っています。
以上がWorkermanドキュメントでのメッセージプッシュ実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。