国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
Umgebungsanforderungen
Projekt erstellen
創(chuàng)建控制器
注冊路由
編寫 WebSocket 通信邏輯
配置 WebSocket 服務(wù)
運行 WebSocket 服務(wù)
rrreee
Heim PHP-Framework Denken Sie an PHP Implementierung von Websocket-Broadcast mit ThinkPHP6

Implementierung von Websocket-Broadcast mit ThinkPHP6

Jun 20, 2023 am 08:41 AM
thinkphp websocket übertragen

Mit der kontinuierlichen Weiterentwicklung moderner Webanwendungen ist Echtzeitkommunikation zu einer der notwendigen Funktionen geworden. Die WebSocket-Technologie ist eine der beliebtesten Echtzeitkommunikationsmethoden, mit der eine dauerhafte bidirektionale Verbindung zwischen dem Server und dem Client hergestellt werden kann, um eine Echtzeitkommunikation zu erreichen.

ThinkPHP ist ein sehr beliebtes PHP-Framework. ThinkPHP 6 wird mit dem Swoole-Erweiterungspaket geliefert, was die Verwendung der WebSocket-Technologie sehr einfach macht. In diesem Artikel wird erl?utert, wie Sie mit dem ThinkPHP 6-Framework eine WebSocket-Broadcast-Funktion implementieren.

Umgebungsanforderungen

Bevor Sie beginnen, müssen Sie die folgende Umgebung vorbereiten:

  • PHP 7.2+
  • Swoole-Erweiterung
  • Composer
  • Grundkenntnisse in der Webentwicklung

Projekt erstellen

Zuerst müssen wir Folgendes tun erstellen ein neues Projekt:

composer create-project topthink/think my-project

Um die Verwendung von WebSocket zu erleichtern, müssen wir dann die Swoole-Erweiterung in die Datei composer.json des Projekts einfügen: composer.json 文件中添加 Swoole 擴展:

"require": {
    "topthink/think-swoole": "^2.0",
    "swoole/swoole": "^4.7"
}

完成后,運行以下命令進行安裝:

composer install

創(chuàng)建控制器

接下來,我們需要創(chuàng)建一個控制器來處理 WebSocket 的請求。在 app/controller 目錄下創(chuàng)建一個名為 Websocket.php 的文件,寫入以下代碼:

<?php

declare(strict_types=1);

namespace appcontroller;

use thinkswooleWebsocket as SwooleWebsocket;
use SwooleWebSocketFrame;

class Websocket extends SwooleWebsocket
{
    /**
     * 監(jiān)聽連接事件
     * @param SwooleWebSocketServer $server
     * @param SwooleHttpRequest $request
     */
    public function onOpen($server, $request)
    {
    }

    /**
     * 監(jiān)聽接收消息事件
     * @param SwooleWebSocketServer $server
     * @param Frame $frame
     */
    public function onMessage($server, Frame $frame)
    {
    }

    /**
     * 監(jiān)聽關(guān)閉事件
     * @param SwooleWebSocketServer $server
     * @param int $fd
     */
    public function onClose($server, $fd)
    {
    }
}

在上面的代碼中,我們繼承了 thinkswooleWebsocket 類,并重寫了其中的三個方法:

  • onOpen 方法用于監(jiān)聽連接事件;
  • onMessage 方法用于監(jiān)聽接收消息事件;
  • onClose 方法用于監(jiān)聽關(guān)閉事件。

當(dāng)前,這些方法并沒有做任何事情,接下來我們將會在這些方法中添加 WebSocket 通信的邏輯。

注冊路由

在控制器創(chuàng)建好之后,我們需要在路由中進行注冊。在 app/route.php 文件中添加以下內(nèi)容:

use thinkacadeRoute;

Route::post('/ws', 'Websocket@onMessage')->middleware(    hinkmiddlewareAllowCrossDomain::class);

這里使用了 Route::post 方法來注冊路由。這個路由的請求方式是 POST,路徑為 /ws,并將請求映射到了 Websocket 控制器的 onMessage 方法上。

編寫 WebSocket 通信邏輯

現(xiàn)在,我們已經(jīng)完成了 WebSocket 路由和控制器的創(chuàng)建與注冊。接下來,我們需要在控制器中添加 WebSocket 通信的邏輯。我們將使用 Swoole 的 WebSocket 服務(wù)端來實現(xiàn) WebSocket 通信。

onOpen 方法中,我們可以獲取客戶端的連接對象,并將其存儲起來,以便后續(xù)使用。在 onMessage 方法中,我們可以獲取客戶端發(fā)送的消息,并將這條消息廣播給其它客戶端。在 onClose 方法中,我們需要將客戶端從連接池中移除。

app/controller 目錄下創(chuàng)建一個名為 WebSocketServer.php 的文件,寫入以下代碼:

<?php

declare(strict_types=1);

namespace appcontroller;

use SwooleHttpResponse;
use SwooleWebSocketFrame;
use SwooleWebSocketServer;
use thinkswoolewebsocketHandlerInterface;

class WebSocketServer implements HandlerInterface
{
    /**
     * @var array $connections
     */
    private $connections = [];

    /**
     * 監(jiān)聽連接事件
     * @param Server $server
     * @param SwooleHttpRequest $request
     */
    public function onOpen(Server $server, SwooleHttpRequest $request): void
    {
        $this->connections[$request->fd] = $request->fd;

        echo "client-{$request->fd} is connected
";
    }

    /**
     * 監(jiān)聽消息事件
     * @param Server $server
     * @param Frame $frame
     */
    public function onMessage(Server $server, Frame $frame): void
    {
        foreach ($this->connections as $fd) {
            $info = $server->getClientInfo((int)$fd);
            if ($info && isset($info['websocket_status']) && $info['websocket_status'] == WEBSOCKET_STATUS_FRAME) {
                $server->push($fd, $frame->data);
            } else {
                unset($this->connections[$fd]);
            }
        }

        echo "received message from client-{$frame->fd}: {$frame->data}
";
    }

    /**
     * 監(jiān)聽關(guān)閉事件
     * @param Server $server
     * @param int $fd
     * @param int $reactorId
     */
    public function onClose(Server $server, int $fd, int $reactorId): void
    {
        unset($this->connections[$fd]);

        echo "client-{$fd} is closed
";
    }

    /**
     * @param Response $response
     */
    public function onHandShake(Request $request, Response $response): bool
    {
        // Do nothing
        return true;
    }
}

配置 WebSocket 服務(wù)

在寫入 WebSocket 的服務(wù)代碼之前,我們需要在 config 目錄下創(chuàng)建一個名為 swoole.php 的配置文件,寫入以下內(nèi)容:

return [
    'socket_type' => 'websocket',
    'host'        => '0.0.0.0',
    'port'        => 9501,
    'mode'        => SWOOLE_PROCESS,
    'sock_type'   => SWOOLE_SOCK_TCP,
    'settings' => [
        'worker_num' => swoole_cpu_num(),
    ],
    'handler' => ppcontrollerWebSocketServer::class,
];

在上面的代碼中,我們通過配置文件告訴應(yīng)用程序如何啟動 Swoole WebSocket 服務(wù)。我們啟動 websocket socket 類型,綁定在 0.0.0.0:9501 上,并開啟了多進程模式,使用 TCP 協(xié)議。worker_num 配置項設(shè)置了服務(wù)器的進程數(shù),這里使用了 swoole_cpu_num() 用于返回系統(tǒng) CPU 數(shù)量;handler 配置項指定了我們在上文中創(chuàng)建的 WebSocketServer 類。

運行 WebSocket 服務(wù)

在完成了創(chuàng)建、配置 WebSocket 服務(wù)的代碼之后,我們需要運行一下代碼,來開啟 WebSocket 服務(wù)。在命令行中執(zhí)行以下命令即可:

php think swoole start --mode=websocket

Websocket 服務(wù)已經(jīng)啟動,你可以通過訪問你的應(yīng)用程序來測試它。你可以使用這個地址:ws://your-domain:9501/wsrrreee

Führen Sie nach Abschluss den folgenden Befehl aus Zum Installieren:

rrreee

Kontroll-Controller erstellen

Als n?chstes müssen wir einen Controller erstellen, um WebSocket-Anfragen zu verarbeiten. Erstellen Sie eine Datei mit dem Namen Websocket.php im Verzeichnis app/controller und schreiben Sie den folgenden Code: ??rrreee??Im obigen Code haben wir thinkswooleWebsocketgeerbt >-Klasse und überschreibt drei darin enthaltene Methoden: ??????onOpen-Methode wird zum Abh?ren von Verbindungsereignissen verwendet; ????onMessage-Methode wird zum Abh?ren von Empfangsnachrichtenereignissen verwendet; Die Methode ????onClose wird verwendet, um auf Abschlussereignisse zu warten. ??????Derzeit bewirken diese Methoden nichts. Als N?chstes werden wir diesen Methoden die Logik der WebSocket-Kommunikation hinzufügen. ????Route registrieren????Nachdem der Controller erstellt wurde, müssen wir ihn in der Route registrieren. Fügen Sie den folgenden Inhalt in die Datei app/route.php ein: ??rrreee??Die Methode Route::post wird hier verwendet, um die Route zu registrieren. Die Anforderungsmethode dieser Route ist POST, der Pfad ist /ws und die Anforderung wird der onMessage des Websocket zugeordnet Controller > Methodisch. ????WebSocket-Kommunikationslogik schreiben????Jetzt haben wir die Erstellung und Registrierung von WebSocket-Routen und -Controllern abgeschlossen. Als n?chstes müssen wir die Logik für die WebSocket-Kommunikation im Controller hinzufügen. Wir werden den WebSocket-Server von Swoole verwenden, um die WebSocket-Kommunikation zu implementieren. ????In der Methode onOpen k?nnen wir das Verbindungsobjekt des Clients abrufen und für die sp?tere Verwendung speichern. Mit der Methode onMessage k?nnen wir die vom Client gesendete Nachricht abrufen und diese Nachricht an andere Clients senden. In der Methode onClose müssen wir den Client aus dem Verbindungspool entfernen. ????Erstellen Sie eine Datei mit dem Namen WebSocketServer.php im Verzeichnis app/controller und schreiben Sie den folgenden Code: ??rrreee??Konfigurieren Sie den WebSocket-Dienst.????Schreiben Sie den WebSocket, bevor Sie ihn bereitstellen Code müssen wir eine Konfigurationsdatei mit dem Namen swoole.php im Verzeichnis config erstellen und den folgenden Inhalt schreiben: ??rrreee??Im obigen Code sagen wir der Anwendung, wie um den Swoole WebSocket-Dienst über die Konfigurationsdatei zu starten. Wir starten den Socket-Typ websocket, binden ihn an 0.0.0.0:9501 und aktivieren den Multiprozessmodus mithilfe des TCP-Protokolls. Das Konfigurationselement worker_num legt die Anzahl der Prozesse auf dem Server fest. swoole_cpu_num() wird hier verwendet, um die Anzahl der System-CPUs zurückzugeben Das Konfigurationselement gibt unsere oben erstellte Klasse WebSocketServer an. ????Führen Sie den WebSocket-Dienst aus????Nachdem wir den Code zum Erstellen und Konfigurieren des WebSocket-Dienstes fertiggestellt haben, müssen wir den Code ausführen, um den WebSocket-Dienst zu starten. Führen Sie einfach den folgenden Befehl in der Befehlszeile aus: ??rrreee??Der Websocket-Dienst wurde gestartet und Sie k?nnen ihn testen, indem Sie auf Ihre Anwendung zugreifen. Sie k?nnen diese Adresse verwenden: ws://your-domain:9501/ws. ?ffnen Sie mehrere Registerkarten im Browser, um die WebSocket-Verbindung sowie die Funktionen zum Senden und Empfangen von Nachrichten zu testen. ????Zusammenfassung????In diesem Artikel wird erl?utert, wie Sie mit dem ThinkPHP 6-Framework eine WebSocket-Broadcast-Funktion implementieren. Dies erreichen wir, indem wir Controller erstellen, Routen registrieren, WebSocket-Kommunikationslogik schreiben und den WebSocket-Dienst konfigurieren. Dieses Beispiel kann als einfache Best Practice für WebSocket verwendet werden und bietet uns eine Referenz für die Entwicklung erweiterter WebSocket-Funktionen. ??

Das obige ist der detaillierte Inhalt vonImplementierung von Websocket-Broadcast mit ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
So führen Sie das Thinkphp-Projekt aus So führen Sie das Thinkphp-Projekt aus Apr 09, 2024 pm 05:33 PM

Um das ThinkPHP-Projekt auszuführen, müssen Sie: Composer installieren, das Projektverzeichnis aufrufen und http://localhost:8000 aufrufen.

Es gibt mehrere Versionen von thinkphp Es gibt mehrere Versionen von thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP verfügt über mehrere Versionen, die für verschiedene PHP-Versionen entwickelt wurden. Zu den Hauptversionen geh?ren 3.2, 5.0, 5.1 und 6.0, w?hrend Nebenversionen dazu dienen, Fehler zu beheben und neue Funktionen bereitzustellen. Die neueste stabile Version ist ThinkPHP 6.0.16. Berücksichtigen Sie bei der Auswahl einer Version die PHP-Version, die Funktionsanforderungen und den Community-Support. Für optimale Leistung und Support wird empfohlen, die neueste stabile Version zu verwenden.

So führen Sie thinkphp aus So führen Sie thinkphp aus Apr 09, 2024 pm 05:39 PM

Schritte zum lokalen Ausführen von ThinkPHP Framework: Laden Sie ThinkPHP Framework herunter und entpacken Sie es in ein lokales Verzeichnis. Erstellen Sie einen virtuellen Host (optional), der auf das ThinkPHP-Stammverzeichnis verweist. Konfigurieren Sie Datenbankverbindungsparameter. Starten Sie den Webserver. Initialisieren Sie die ThinkPHP-Anwendung. Greifen Sie auf die URL der ThinkPHP-Anwendung zu und führen Sie sie aus.

PHP und WebSocket: Best Practices für die Echtzeit-Datenübertragung PHP und WebSocket: Best Practices für die Echtzeit-Datenübertragung Dec 18, 2023 pm 02:10 PM

PHP und WebSocket: Best-Practice-Methoden für die Echtzeit-Datenübertragung Einführung: Bei der Entwicklung von Webanwendungen ist die Echtzeit-Datenübertragung eine sehr wichtige technische Anforderung. Das herk?mmliche HTTP-Protokoll ist ein Anforderungs-Antwort-Modellprotokoll und kann keine Datenübertragung in Echtzeit effektiv erreichen. Um den Anforderungen der Echtzeit-Datenübertragung gerecht zu werden, wurde das WebSocket-Protokoll entwickelt. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das eine M?glichkeit zur Vollduplex-Kommunikation über eine einzelne TCP-Verbindung bietet. Im Vergleich zu H

So verwenden Sie Java und WebSocket, um den Push von Aktienkursen in Echtzeit zu implementieren So verwenden Sie Java und WebSocket, um den Push von Aktienkursen in Echtzeit zu implementieren Dec 17, 2023 pm 09:15 PM

So implementieren Sie mithilfe von Java und WebSocket einen Aktienkurs-Push in Echtzeit. Einführung: Mit der rasanten Entwicklung des Internets ist der Echtzeit-Aktienkurs-Push zu einem der Schwerpunkte der Anleger geworden. Die traditionelle B?rsen-Push-Methode weist Probleme wie hohe Verz?gerungen und langsame Aktualisierungsgeschwindigkeit auf. Für Anleger kann die Unf?higkeit, rechtzeitig die neuesten B?rseninformationen zu erhalten, zu Fehlern bei Anlageentscheidungen führen. Echtzeit-Aktienkurs-Push auf Basis von Java und WebSocket kann dieses Problem effektiv l?sen, sodass Anleger so schnell wie m?glich die neuesten Aktienkursinformationen erhalten.

So erreichen Sie Echtzeitkommunikation mit PHP und WebSocket So erreichen Sie Echtzeitkommunikation mit PHP und WebSocket Dec 17, 2023 pm 10:24 PM

Mit der kontinuierlichen Weiterentwicklung der Internettechnologie ist Echtzeitkommunikation zu einem unverzichtbaren Bestandteil des t?glichen Lebens geworden. Mit der WebSockets-Technologie kann eine effiziente Echtzeitkommunikation mit geringer Latenz erreicht werden, und PHP als eine der am weitesten verbreiteten Entwicklungssprachen im Internetbereich bietet auch entsprechende WebSocket-Unterstützung. In diesem Artikel wird erl?utert, wie Sie mithilfe von PHP und WebSocket eine Echtzeitkommunikation erreichen, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist ein Single

Was ist besser, Laravel oder Thinkphp? Was ist besser, Laravel oder Thinkphp? Apr 09, 2024 pm 03:18 PM

Leistungsvergleich von Laravel- und ThinkPHP-Frameworks: ThinkPHP schneidet im Allgemeinen besser ab als Laravel und konzentriert sich auf Optimierung und Caching. Laravel schneidet gut ab, aber für komplexe Anwendungen ist ThinkPHP m?glicherweise besser geeignet.

SSE und WebSocket SSE und WebSocket Apr 17, 2024 pm 02:18 PM

In diesem Artikel vergleichen wir Server Sent Events (SSE) und WebSockets, beides zuverl?ssige Methoden zur übermittlung von Daten. Wir werden sie in acht Aspekten analysieren, darunter Kommunikationsrichtung, zugrunde liegendes Protokoll, Sicherheit, Benutzerfreundlichkeit, Leistung, Nachrichtenstruktur, Benutzerfreundlichkeit und Testtools. Ein Vergleich dieser Aspekte l?sst sich wie folgt zusammenfassen: Kategorie Server Sent Event (SSE) WebSocket-Kommunikationsrichtung Einseitig bidirektional Zugrundeliegendes Protokoll HTTP WebSocket-Protokoll Sicherheit Gleich wie HTTP Vorhandene Sicherheitslücken Benutzerfreundlichkeit Einstellungen Einfache Einstellungen Komplexe Leistung Schnelle Nachrichtenversandgeschwindigkeit Betroffen von der Nachrichtenverarbeitung und dem Verbindungsmanagement. Nachrichtenstruktur Nur Text oder Bin?r. Benutzerfreundlichkeit. Weit verbreitet. Hilfreich für die WebSocket-Integration

See all articles