現在の位置: ホーム> 最新記事一覧> Yii2はWorkermanと統合してWebsocket Communication:詳細なチュートリアルを実装しています

Yii2はWorkermanと統合してWebsocket Communication:詳細なチュートリアルを実装しています

gitbox 2025-07-15

Yii2はWorkermanと統合してWebsocket Communicationを実装します

Yii2は強力なPHPフレームワークですが、Workermanは非同期性をサポートする高性能PHPソケットフレームワークです。これら2つのフレームワークを組み合わせて使用すると、開発者がWebSocket Communication機能を迅速に実装できます。この記事では、例を使用して、Yii2にWorkermanを統合してWebsocket Communicationを実装する方法について説明します。

Yii2をインストールします

まず、Yii2フレームワークをインストールする必要があります。 Composerを使用して、次のコマンドでYii2をインストールできます。

 composer create-project --prefer-dist yiisoft/yii2-app-basic basic

このコマンドは、現在のディレクトリにBasicというYii2アプリケーションを作成します。

Workermanをインストールします

次に、Workermanをインストールする必要があります。作曲家は、迅速なインストールに使用できます。

 composer require workerman/workerman

インストールが完了したら、Worker.phpというファイルを作成して、Workermanサービスを開始する必要があります。これがサンプルコードです:

 // worker.php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker('websocket://0.0.0.0:8080');
$worker->onMessage = function($connection, $data) {
    // 受信したメッセージを処理します
    $message = 'Received: ' . $data;
    // クライアントにメッセージを送信します
    $connection->send($message);
};
Worker::runAll();

上記のコードは、ポート8080に耳を傾けるWebsocketサーバーを作成します。メッセージが受信されると、メッセージはクライアントにそのまま返されます。

Yii2コントローラーとビューを作成します

次に、Yii2アプリケーションでは、WebSocketリクエストを処理するコントローラーを作成する必要があります。これがWebSocketコントローラーのコードです。

 // WebSocketController.php
namespace app\controllers;
use yii\web\Controller;
class WebSocketController extends Controller
{
    public $enableCsrfValidation = false;
    public function actionIndex()
    {
        // aを作成しますwebsocket接続する
        $connection = new \Workerman\Connection\TcpConnection('websocket://127.0.0.1:8080');
        $connection->onMessage = function($connection, $message) {
            // 受信したメッセージを処理します
            $message = 'Received: ' . $message;
            // クライアントにメッセージを送信します
            $connection->send($message);
        };
        // 起動するwebsocket接続する
        $connection->connect();
    }
}

このコントローラーでは、WorkermanのTCPConnectionを使用してWebSocket接続を作成し、メッセージを受信した後に返すメッセージコールバック関数を定義します。

次に、ビューファイルで、ボタンを作成し、クリックしてサーバーにメッセージを送信できます。

 <?php
use yii\helpers\Html;
?>
<h1>WebSocket Example</h1>
<button id="sendButton">Send Message</button>
<script>
$(document).ready(function() {
    $('#sendButton').click(function() {
        var message = "Hello, server!";
        // サーバーにメッセージを送信します
        websocket.send(message);
    });
});
</script>

このコードでは、jQueryを使用してボタンのクリックイベントをバインドし、ユーザーがボタンをクリックすると、Websocketサーバーにメッセージを送信します。

ルーティングを構成します

Yii2アプリケーションがWebSocketコントローラーに正しくアクセスするには、構成ファイルにルートを設定する必要があります。 Yii2アプリケーションの構成ファイルで、コンポーネントアレイを見つけて、次のものを追加します。

 'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // に追加websocketルーティング
        '/websocket' => 'websocket/index'
    ],
],

上記の構成を通じて、 /websocketルートは、以前に作成したWebSocketコントローラーを指します。

要約します

この記事の説明を通じて、Yii2フレームワークにWebsocket Communication機能を実装するためにWorkermanを組み合わせる方法を学びました。最初に、Composerを介してYii2とWorkerman Frameworksをインストールしました。次に、WebSocket接続を処理するワーカーサービスを作成しました。次に、Yii2アプリケーションでコントローラーとビューを設定し、ルーティングを構成することにより、WebSocket機能へのアクセスを最終的に達成しました。

この例を使用すると、WorkermanをYii2アプリケーションに簡単に統合し、アプリケーションにリアルタイムの通信機能を追加し、ユーザーエクスペリエンスを改善できます。