Workerman 開発: WebSocket サーバーの実装方法
Workerman を使用して WebSocket サーバーを実装する方法
WebRTC テクノロジ、ゲームのリアルタイム通信、オンライン チャット、その他のアプリケーションの人気が高まるにつれて、WebSocket テクノロジはますます重要です。 Workerman は、PHP 環境で実行される高性能の非同期 TCP、UDP、および Unix Socket ネットワーク フレームワークであり、本質的に高い同時実行性をサポートしており、WebSocket サーバーの開発に非常に適しています。
この記事では、WebSocket 接続の処理方法、WebSocket メッセージの送受信方法、フレームワークと他のライブラリとの統合方法など、Workerman を使用して WebSocket サーバーを実装する方法を詳しく紹介します。完全なサンプル コードも記事の最後に記載されています。
- Workerman のインストール
Workerman の使用を開始する前に、Workerman をインストールする必要があります。 Composer を介してインストールすることも、GitHub からソース コードを直接ダウンロードして手動でインストールすることもできます。ここでは Composer のインストールを例に挙げます。
composer require workerman/workerman
- WebSocket サーバー コードの作成
Workerman を使用して WebSocket サーバーを実装する前に、まず次の動作原理を理解する必要があります。 WebSocket プロトコル。 WebSocket は全二重の長時間接続プロトコルであり、クライアントとサーバーはハンドシェイクを通じて接続を確立し、相互にメッセージを送信できます。 WebSocket メッセージには、テキスト、バイナリ、さらにはファイルなどの任意のデータを使用でき、サーバーはメッセージの種類に応じて異なる方法でメッセージを処理できます。
Workerman を使用した WebSocket サーバーの実装は非常に簡単で、数行のコードのみで完了します。以下に例を示します。
require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; // 创建一个Worker监听8090端口,使用websocket协议通讯 $wsWorker = new Worker("websocket://0.0.0.0:8090"); // 启动4个进程对外提供服务 $wsWorker->count = 4; // 处理WebSocket连接的回调函数 $wsWorker->onConnect = function($connection) { echo "New connection "; }; // 处理WebSocket消息的回调函数 $wsWorker->onMessage = function($connection, $data) { // 处理消息... }; // 启动Worker Worker::runAll();
まず、Worker インスタンスを作成し、ポート 8090 でリッスンし、WebSocket プロトコルを使用して通信するように指定します。次に、4 つのプロセスをセットアップして、多数の同時接続の処理を開始します。 Worker は TCP、UDP、Unix Socket などの複数の送信プロトコルをサポートしているため、WebSocket プロトコルを指定する必要があります。
この例では、2 つのコールバック関数のみを定義します。
- 新しい WebSocket 接続が確立されると、onConnect コールバック関数が呼び出され、それをここに記録できます。ログやオンライン ユーザー統計として。
- WebSocket メッセージを受信すると、onMessage コールバック関数が呼び出され、簡単な計算や返信の送信など、ここでメッセージを処理する必要があります。
- 最後のステップはワーカーを起動することです。ワーカーは指定されたポートのリッスンを開始し、WebSocket 接続とメッセージを処理します。
- WebSocket メッセージ処理
onMessage コールバック関数を通じて、クライアントから送信された WebSocket メッセージを受信できます。データ形式はテキストまたはバイナリです。 WebSocket メッセージの処理方法はアプリケーションのシナリオによって異なります。たとえば、オンライン チャット アプリケーションではブロードキャストやポイントツーポイント チャットなどの機能を実装する必要があり、ゲーム アプリケーションではマイクロ秒レベルのリアルタイム通信を実装する必要があります。
以下は、受信したメッセージを出力してクライアントに返信できる簡単な例です:
$wsWorker->onMessage = function($connection, $data) { echo "Received message: {$data} "; $connection->send("Received: {$data}"); };
WebSocket 接続のステータス
WebSocket 接続が確立された後, クライアントとサーバー間の接続は開いたままになります。 onClose コールバック関数を通じて、切断イベントを処理できます。
$wsWorker->onClose = function($connection) { echo "Connection closed "; };
- 統合フレームワーク
Workerman は他のフレームワークと簡単に統合できます。ここでは、Laravel フレームワークを例として、Workerman を使用して Laravel に WebSocket サーバーを実装する方法を紹介します。
まず、Laravel プロジェクトに Workerman をインストールする必要があります:
composer require workerman/workerman
次に、WebSocket サーバーを起動するカスタム Artisan コマンドを作成できます:
php artisan make:command WebSocketServer
次に、 app /Console/Commands/WebSocketServer.php ファイルにコードを記述します:
<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; use WorkermanWorker; class WebSocketServer extends Command { // 命令名称 protected $name = 'websocket:server'; // 命令描述 protected $description = 'Start WebSocket server'; // 执行命令 public function handle() { // 创建Worker实例,监听8080端口 $wsWorker = new Worker("websocket://0.0.0.0:8080"); // 进程数量 $wsWorker->count = 4; // 处理连接事件 $wsWorker->onConnect = function($connection) { echo "New connection "; }; // 处理消息事件 $wsWorker->onMessage = function($connection, $data) { // 处理消息 }; // 运行Worker Worker::runAll(); } }
最後に、次のコマンドを使用して WebSocket サーバーを起動できます:
php artisan websocket:server
ご覧のとおり、これは非常に便利です。 Workerman を使用して WebSocket サーバーを実装するのは簡単で、他のフレームワークに簡単に統合できます。
- 完全なコード例
以下は、クライアントから送信されたメッセージを受信して簡単な処理を実行し、処理結果を返信する完全な WebSocket サーバーの例です。クライアント:
count = 4; // 处理WebSocket连接的回调函数 $wsWorker->onConnect = function($connection) { echo "New connection "; }; // 处理WebSocket消息的回调函数 $wsWorker->onMessage = function($connection, $data) { echo "Received message: {$data} "; $result = "Received: {$data}"; $connection->send($result); }; // 处理连接断开事件的回调函数 $wsWorker->onClose = function($connection) { echo "Connection closed "; }; // 启动Worker Worker::runAll();
上記は Workerman を使用して WebSocket サーバーを実装する方法についての説明です。この記事の紹介を通じて、読者は関連する技術知識を習得し、実際のプロジェクトでもこれらのテクニックを使用できるようになると思います。発展した。
以上がWorkerman 開発: WebSocket サーバーの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック







