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

Table des matières
Exigences en matière d'environnement
Créer un projet
創(chuàng)建控制器
注冊路由
編寫 WebSocket 通信邏輯
配置 WebSocket 服務
運行 WebSocket 服務
rrreee
Maison cadre php PensezPHP Implémentation de la diffusion Websocket à l'aide de ThinkPHP6

Implémentation de la diffusion Websocket à l'aide de ThinkPHP6

Jun 20, 2023 am 08:41 AM
thinkphp websocket diffuser

Avec le développement continu des applications Web modernes, la communication en temps réel est devenue l'une des fonctions nécessaires. La technologie WebSocket est l'une des méthodes de communication en temps réel les plus populaires, permettant d'établir une connexion bidirectionnelle persistante entre le serveur et le client pour établir une communication en temps réel.

ThinkPHP est un framework PHP très populaire. ThinkPHP 6 est livré avec le package d'extension Swoole, ce qui rend très simple l'utilisation de la technologie WebSocket. Cet article explique comment utiliser le framework ThinkPHP 6 pour implémenter une fonction de diffusion WebSocket.

Exigences en matière d'environnement

Avant de commencer, vous devez préparer l'environnement suivant?:

  • PHP 7.2+
  • Extension Swoole
  • Composer
  • Connaissances de base en développement Web

Créer un projet

Tout d'abord, nous devons créer un nouveau projet?:

composer create-project topthink/think my-project

Ensuite, afin de faciliter l'utilisation de WebSocket, nous devons ajouter l'extension Swoole dans le fichier composer.json du projet?: 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)聽關閉事件
     * @param SwooleWebSocketServer $server
     * @param int $fd
     */
    public function onClose($server, $fd)
    {
    }
}

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

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

當前,這些方法并沒有做任何事情,接下來我們將會在這些方法中添加 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 服務端來實現(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)聽關閉事件
     * @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 服務

在寫入 WebSocket 的服務代碼之前,我們需要在 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,
];

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

運行 WebSocket 服務

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

php think swoole start --mode=websocket

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

Une fois terminé, exécutez la commande suivante pour installer?:

rrreee

Créer un contr?leur de contr?le

Ensuite, nous devons créer un contr?leur pour gérer les requêtes WebSocket. Créez un fichier nommé Websocket.php dans le répertoire app/controller et écrivez le code suivant?: ??rrreee??Dans le code ci-dessus, nous avons hérité de thinkswooleWebsocket classe, et y remplace trois méthodes?: ??????La méthode onOpen est utilisée pour écouter les événements de connexion?; ????La méthode onMessage est utilisée pour écouter l'événement de réception de message?; ????La méthode onClose est utilisée pour écouter les événements de fermeture. ??????Actuellement, ces méthodes ne font rien. Ensuite, nous ajouterons la logique de communication WebSocket à ces méthodes. ????Enregistrer l'itinéraire????Une fois le contr?leur créé, nous devons l'enregistrer dans l'itinéraire. Ajoutez le contenu suivant dans le fichier app/route.php?: ??rrreee??La méthode Route::post est utilisée ici pour enregistrer l'itinéraire. La méthode de requête de cette route est POST, le chemin est /ws et la requête est mappée au onMessage du Websocket contr?leur > Méthodologiquement. ????écriture de la logique de communication WebSocket????Maintenant, nous avons terminé la création et l'enregistrement des routes et des contr?leurs WebSocket. Ensuite, nous devons ajouter la logique de communication WebSocket dans le contr?leur. Nous utiliserons le serveur WebSocket de Swoole pour implémenter la communication WebSocket. ????Dans la méthode onOpen, nous pouvons obtenir l'objet de connexion du client et le stocker pour une utilisation ultérieure. Dans la méthode onMessage, nous pouvons récupérer le message envoyé par le client et diffuser ce message aux autres clients. Dans la méthode onClose, nous devons supprimer le client du pool de connexions. ????Créez un fichier nommé WebSocketServer.php dans le répertoire app/controller et écrivez le code suivant?: ??rrreee??Configurez le service WebSocket????écrivez le WebSocket Avant de servir le code, nous devons créer un fichier de configuration nommé swoole.php dans le répertoire config et écrire le contenu suivant?: ??rrreee??Dans le code ci-dessus, nous indiquons à l'application comment pour démarrer le service Swoole WebSocket via le fichier de configuration. Nous démarrons le type de socket websocket, le lions à 0.0.0.0:9501 et activons le mode multi-processus, en utilisant le protocole TCP. L'élément de configuration worker_num définit le nombre de processus sur le serveur. swoole_cpu_num() est utilisé ici pour renvoyer le nombre de processeurs système?; L'élément de configuration spécifie notre classe WebSocketServer créée ci-dessus. ????Exécuter le service WebSocket????Après avoir terminé le code pour créer et configurer le service WebSocket, nous devons exécuter le code pour démarrer le service WebSocket. Exécutez simplement la commande suivante sur la ligne de commande : ??rrreee??Le service Websocket a été démarré et vous pouvez le tester en accédant à votre application. Vous pouvez utiliser cette adresse?: ws://votre-domaine:9501/ws. Ouvrez plusieurs onglets dans le navigateur pour tester respectivement la connexion WebSocket, les fonctions d'envoi et de réception de messages. ????Résumé????Cet article présente comment utiliser le framework ThinkPHP 6 pour implémenter une fonction de diffusion WebSocket. Nous y parvenons en créant des contr?leurs, en enregistrant les routes, en écrivant la logique de communication WebSocket et en configurant le service WebSocket. Cet exemple peut être utilisé comme une simple bonne pratique WebSocket et nous fournit une référence pour développer des fonctions WebSocket plus avancées. ??

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comment exécuter le projet thinkphp Comment exécuter le projet thinkphp Apr 09, 2024 pm 05:33 PM

Pour exécuter le projet ThinkPHP, vous devez?: installer Composer?; utiliser Composer pour créer le projet?; entrer dans le répertoire du projet et exécuter php bin/console serve?; visiter http://localhost:8000 pour afficher la page d'accueil.

Il existe plusieurs versions de thinkphp Il existe plusieurs versions de thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP dispose de plusieurs versions con?ues pour différentes versions de PHP. Les versions majeures incluent 3.2, 5.0, 5.1 et 6.0, tandis que les versions mineures sont utilisées pour corriger les bogues et fournir de nouvelles fonctionnalités. La dernière version stable est ThinkPHP 6.0.16. Lorsque vous choisissez une version, tenez compte de la version PHP, des exigences en matière de fonctionnalités et du support de la communauté. Il est recommandé d'utiliser la dernière version stable pour de meilleures performances et une meilleure assistance.

Comment exécuter thinkphp Comment exécuter thinkphp Apr 09, 2024 pm 05:39 PM

étapes pour exécuter ThinkPHP Framework localement?: Téléchargez et décompressez ThinkPHP Framework dans un répertoire local. Créez un h?te virtuel (facultatif) pointant vers le répertoire racine ThinkPHP. Configurez les paramètres de connexion à la base de données. Démarrez le serveur Web. Initialisez l'application ThinkPHP. Accédez à l'URL de l'application ThinkPHP et exécutez-la.

PHP et WebSocket?: bonnes pratiques pour le transfert de données en temps réel PHP et WebSocket?: bonnes pratiques pour le transfert de données en temps réel Dec 18, 2023 pm 02:10 PM

PHP et WebSocket?: meilleures pratiques pour le transfert de données en temps réel Introduction?: Dans le développement d'applications Web, le transfert de données en temps réel est une exigence technique très importante. Le protocole HTTP traditionnel est un protocole de modèle requête-réponse et ne peut pas assurer efficacement la transmission de données en temps réel. Afin de répondre aux besoins de transmission de données en temps réel, le protocole WebSocket a vu le jour. WebSocket est un protocole de communication full-duplex qui permet de communiquer en full-duplex via une seule connexion TCP. Comparé à H

Comment réaliser une communication en temps réel en utilisant PHP et WebSocket Comment réaliser une communication en temps réel en utilisant PHP et WebSocket Dec 17, 2023 pm 10:24 PM

Avec le développement continu de la technologie Internet, la communication en temps réel est devenue un élément indispensable de la vie quotidienne. Une communication en temps réel efficace et à faible latence peut être obtenue grace à la technologie WebSockets, et PHP, en tant que l'un des langages de développement les plus utilisés dans le domaine Internet, fournit également la prise en charge WebSocket correspondante. Cet article explique comment utiliser PHP et WebSocket pour établir une communication en temps réel et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ?

Comment utiliser Java et WebSocket pour mettre en ?uvre une poussée des cotations boursières en temps réel Comment utiliser Java et WebSocket pour mettre en ?uvre une poussée des cotations boursières en temps réel Dec 17, 2023 pm 09:15 PM

Comment utiliser Java et WebSocket pour mettre en ?uvre une cotation boursière en temps réel Introduction : Avec le développement rapide d'Internet, la cotation boursière en temps réel est devenue l'une des priorités des investisseurs. La méthode traditionnelle de poussée boursière présente des problèmes tels qu'un retard élevé et une vitesse de rafra?chissement lente. Pour les investisseurs, l'incapacité d'obtenir les dernières informations boursières en temps opportun peut entra?ner des erreurs dans les décisions d'investissement. La cotation boursière en temps réel basée sur Java et WebSocket peut résoudre efficacement ce problème, permettant aux investisseurs d'obtenir les dernières informations sur le cours des actions dès que possible.

Lequel est le meilleur, Laravel ou thinkphp ? Lequel est le meilleur, Laravel ou thinkphp ? Apr 09, 2024 pm 03:18 PM

Comparaison des performances des frameworks Laravel et ThinkPHP?: ThinkPHP fonctionne généralement mieux que Laravel, en se concentrant sur l'optimisation et la mise en cache. Laravel fonctionne bien, mais pour les applications complexes, ThinkPHP peut être mieux adapté.

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

Dans cet article, nous comparerons les événements envoyés par le serveur (SSE) et les WebSockets, qui sont tous deux des méthodes fiables pour fournir des données. Nous les analyserons sous huit aspects, notamment la direction de la communication, le protocole sous-jacent, la sécurité, la facilité d'utilisation, les performances, la structure des messages, la facilité d'utilisation et les outils de test. Une comparaison de ces aspects est résumée comme suit?: Catégorie événement envoyé par le serveur (SSE) Direction de communication WebSocket Unidirectionnel Bidirectionnel Protocole sous-jacent HTTP Sécurité du protocole WebSocket Identique à HTTP Failles de sécurité existantes Facilité d'utilisation Paramètres Paramètres simples Performances complexes Vitesse d'envoi rapide des messages Affecté par le traitement des messages et la gestion des connexions Structure du message Texte brut ou binaire Facilité d'utilisation Largement disponible Utile pour l'intégration de WebSocket

See all articles