Position actuelle: Accueil> Derniers articles> YII2 s'intègre à Workerman pour implémenter la communication WebSocket: tutoriel détaillé

YII2 s'intègre à Workerman pour implémenter la communication WebSocket: tutoriel détaillé

gitbox 2025-07-15

Yii2 s'intègre à Workerman pour implémenter la communication WebSocket

YII2 est un puissant cadre PHP, tandis que Workerman est un cadre de socket PHP haute performance qui prend en charge l'asynchrone. L'utilisation de ces deux cadres en combinaison peut aider les développeurs à implémenter rapidement les capacités de communication WebSocket. Cet article utilisera un exemple pour décrire comment intégrer Workerman dans YII2 pour implémenter la communication WebSocket.

Installer yii2

Tout d'abord, vous devez installer le cadre YII2. Vous pouvez utiliser Composer pour installer Yii2 avec la commande suivante:

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

Cette commande créera une application YII2 appelée Basic dans le répertoire actuel.

Installer Workerman

Ensuite, nous devons installer Workerman. Le compositeur peut être utilisé pour installer rapidement:

 composer require workerman/workerman

Une fois l'installation terminée, vous devez créer un fichier appelé worker.php pour démarrer le service Workerman. Voici un exemple de code:

 // 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) {
    // Traiter le message reçu
    $message = 'Received: ' . $data;
    // Envoyer un message au client
    $connection->send($message);
};
Worker::runAll();

Le code ci-dessus crée un serveur WebSocket qui écoute le port 8080. Lorsqu'un message est reçu, le message sera renvoyé au client intact.

Créer un contrôleur et une vue Yii2

Ensuite, dans l'application YII2, nous devons créer un contrôleur pour gérer les demandes WebSocket. Voici le code du contrôleur WebSocket:

 // WebSocketController.php
namespace app\controllers;
use yii\web\Controller;
class WebSocketController extends Controller
{
    public $enableCsrfValidation = false;
    public function actionIndex()
    {
        // Créer unwebsocketconnecter
        $connection = new \Workerman\Connection\TcpConnection('websocket://127.0.0.1:8080');
        $connection->onMessage = function($connection, $message) {
            // Traiter le message reçu
            $message = 'Received: ' . $message;
            // Envoyer un message au client
            $connection->send($message);
        };
        // démarrerwebsocketconnecter
        $connection->connect();
    }
}

Dans ce contrôleur, nous utilisons TCPConnection de Workerman pour créer une connexion WebSocket et définissons une fonction de rappel de message qui le renvoie après avoir reçu le message.

Ensuite, dans le fichier Affichage, nous pouvons créer un bouton, cliquer et envoyer un message au serveur:

 <?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!";
        // Envoyer un message au serveur
        websocket.send(message);
    });
});
</script>

Dans ce code, nous utilisons jQuery pour lier l'événement de clic pour le bouton, et lorsque l'utilisateur clique sur le bouton, nous envoyons un message au serveur WebSocket.

Configurer le routage

Pour que les applications YII2 accédent correctement au contrôleur WebSocket, nous devons configurer l'itinéraire dans le fichier de configuration. Dans le fichier de configuration de l'application YII2, recherchez le tableau des composants et ajoutez ce qui suit:

 'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // Ajouter àwebsocketroutage
        '/websocket' => 'websocket/index'
    ],
],

Grâce à la configuration ci-dessus, la route / WebSocket pointera vers le contrôleur WebSocket que nous avons créé plus tôt.

Résumer

Grâce à l'explication de cet article, vous avez appris à combiner Workerman pour implémenter des fonctions de communication WebSocket dans le cadre YII2. Tout d'abord, vous avez installé les cadres YII2 et Workerman via Composer; Vous avez ensuite créé un service de travail pour gérer les connexions WebSocket; Ensuite, vous configurez le contrôleur et les vues dans l'application YII2 et avez enfin obtenu l'accès à la fonctionnalité WebSocket en configurant le routage.

Avec cet exemple, vous pouvez facilement intégrer Workerman dans votre application YII2, en ajoutant des capacités de communication en temps réel à votre application et en améliorant l'expérience utilisateur.