Aktueller Standort: Startseite> Neueste Artikel> YII2 Integriert sich in Workerman zur Implementierung von WebSocket -Kommunikation: Detailliertes Tutorial

YII2 Integriert sich in Workerman zur Implementierung von WebSocket -Kommunikation: Detailliertes Tutorial

gitbox 2025-07-15

YII2 integriert sich in Workerman, um die Kommunikation von WebSocket zu implementieren

YII2 ist ein leistungsstarker PHP-Rahmen, während Workerman ein Hochleistungs-PHP-Socket-Framework ist, der Asynchronität unterstützt. Die Verwendung dieser beiden Frameworks in Kombination kann Entwicklern dabei helfen, die Kommunikationsfunktionen von WebSocket schnell zu implementieren. In diesem Artikel wird ein Beispiel verwendet, um zu beschreiben, wie Arbeiter in Yii2 in die Implementierung von WebSocket -Kommunikation integriert werden kann.

Yii2 installieren

Zuerst müssen Sie das YII2 -Framework installieren. Mit dem Komponisten können Sie YII2 mit dem folgenden Befehl installieren:

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

In diesem Befehl wird eine YII2 -Anwendung erstellt, die im aktuellen Verzeichnis Basic bezeichnet wird.

Workerman installieren

Als nächstes müssen wir Workerman installieren. Der Komponist kann verwendet werden, um schnell zu installieren:

 composer require workerman/workerman

Nach Abschluss der Installation müssen Sie eine Datei namens Worker.php erstellen, um den Workerman -Service zu starten. Hier ist ein Beispielcode:

 // 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) {
    // Verarbeiten Sie die empfangene Nachricht
    $message = 'Received: ' . $data;
    // Senden Sie eine Nachricht an den Client
    $connection->send($message);
};
Worker::runAll();

Der obige Code erstellt einen WebSocket -Server, der auf Port 8080 hört. Wenn eine Nachricht empfangen wird, wird die Nachricht an den Client intakt zurückgegeben.

Erstellen Sie YII2 -Controller und Ansicht

Als nächstes müssen wir in der YII2 -Anwendung einen Controller erstellen, um WebSocket -Anfragen zu bearbeiten. Hier ist der Code für den WebSocket -Controller:

 // WebSocketController.php
namespace app\controllers;
use yii\web\Controller;
class WebSocketController extends Controller
{
    public $enableCsrfValidation = false;
    public function actionIndex()
    {
        // Erstellen awebsocketverbinden
        $connection = new \Workerman\Connection\TcpConnection('websocket://127.0.0.1:8080');
        $connection->onMessage = function($connection, $message) {
            // Verarbeiten Sie die empfangene Nachricht
            $message = 'Received: ' . $message;
            // Senden Sie eine Nachricht an den Client
            $connection->send($message);
        };
        // Start-upwebsocketverbinden
        $connection->connect();
    }
}

In diesem Controller verwenden wir die TCPConnection von WorkerMan, um eine WebSocket -Verbindung zu erstellen und eine Meldungs -Rückruffunktion zu definieren, die sie nach Empfang der Nachricht zurückgibt.

Als nächstes können wir in der Ansichtsdatei eine Schaltfläche erstellen, klicken und eine Nachricht an den Server senden:

 <?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!";
        // Senden Sie eine Nachricht an den Server
        websocket.send(message);
    });
});
</script>

In diesem Code verwenden wir JQuery, um das Klickenereignis für die Schaltfläche zu binden. Wenn der Benutzer auf die Schaltfläche klickt, senden wir eine Nachricht an den WebSocket -Server.

Routing konfigurieren

Damit Yii2 -Anwendungen den WebSocket -Controller korrekt zugreifen können, müssen wir die Route in der Konfigurationsdatei einrichten. Suchen Sie in der Konfigurationsdatei der YII2 -Anwendung das Komponentenarray und fügen Sie Folgendes hinzu:

 'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // Hinzufügen zuwebsocketRouting
        '/websocket' => 'websocket/index'
    ],
],

Über die obige Konfiguration verweist die Route /WebSocket -Route auf den zuvor erstellten WebSocket -Controller.

Zusammenfassen

Durch die Erläuterung dieses Artikels haben Sie gelernt, wie man Workerman kombiniert, um WebSocket -Kommunikationsfunktionen im Yii2 -Framework zu implementieren. Zunächst haben Sie die Rahmenbedingungen von YII2 und Workerman über den Komponisten installiert. Anschließend haben Sie einen Arbeiterdienst erstellt, um WebSocket -Verbindungen zu verarbeiten. Anschließend richten Sie den Controller und die Ansichten in der YII2 -Anwendung ein und haben schließlich Zugriff auf die WebSocket -Funktionalität erhalten, indem Sie Routing konfigurieren.

In diesem Beispiel können Sie Workerman problemlos in Ihre YII2-Anwendung integrieren, wodurch Echtzeit-Kommunikationsfunktionen zu Ihrer Anwendung hinzugefügt und die Benutzererfahrung verbessert werden.