Maison interface Web tutoriel CSS Commencez à utiliser HTML5 WebSockets dès aujourd'hui avec un serveur PHP

Commencez à utiliser HTML5 WebSockets dès aujourd'hui avec un serveur PHP

Feb 27, 2025 am 10:24 AM

Start Using HTML5 WebSockets Today With a PHP Server

HTML5 WebSockets révolutionne la communication du serveur en éliminant le besoin de demandes AJAX. Ce tutoriel vous guide en créant un serveur WebSocket PHP et un client pour échanger des messages à l'aide du protocole WebSocket. Un poteau de compagnie couvre à l'aide de WebSockets avec des serveurs Node.js.

Comprendre les WebSockets

Un WebSocket établit un canal de communication bidirectionnel persistant entre un client (comme un navigateur) et un service backend. Contrairement à la nature de la demande / réponse de HTTP, WebSockets prend en charge divers protocoles et activez la livraison de messages de serveur à client sans sondage constant.

Ce que les WebSockets remplacent

WebSockets surmonte les limites de la communication HTTP traditionnelle. Avant les WebSockets, le sans-étape de HTTP a rendu la communication en temps réel difficile, car les serveurs ne pouvaient pas pousser de manière proactive les données vers les clients.

WebSockets offrent également des avantages par rapport aux techniques plus anciennes comme les sondages longs et les événements de serveur (SSE) de l'AJAX. Un sondage long, tout en réduisant la latence en gardant les connexions ouvertes, souffre toujours de délais d'attente potentiels. Ceci, ainsi que les inefficacités des ressources de nombreuses applications AJAX, met en évidence la nécessité d'une solution en temps réel plus efficace - WebSockets. Ils permettent une technologie "push" côté serveur, envoyant des données aux clients sans avoir besoin d'une demande de connexion préétablie.

Installation de la bibliothèque de WebSockets à cliquet

Ratchet est une bibliothèque PHP pour créer des applications en temps réel, bidirectionnelles et motivées à l'aide de WebSockets. Nous l'utiliserons pour créer notre serveur.

En supposant que le compositeur est installé, utilisez cette commande:

composer require cboden/ratchet
Copier après la connexion

Cela génère un fichier composer.json similaire à ceci:

{
    "require": {
        "cboden/ratchet": "^0.4.4"
    }
}
Copier après la connexion

Création du serveur WebSockets

Créer server.php avec le code suivant:

<?php
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;

require __DIR__ . '/vendor/autoload.php';

class WebSocketsServer implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new \SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "New connection! ({$conn->resourceId})\n";
    }

    public function onMessage(ConnectionInterface $from, $msg) {
        foreach ($this->clients as $client) {
            if ($from !== $client) {
                $client->send($msg);
            }
        }
    }

    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
        echo "Connection {$conn->resourceId} has disconnected\n";
    }

    public function onError(ConnectionInterface $conn, \Exception $e) {
        echo "An error has occurred: {$e->getMessage()}\n";
        $conn->close();
    }
}

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new WebSocketsServer()
        )
    ),
    8089
);

$server->run();
Copier après la connexion

Ce code définit une WebSocketsServer class implémentation MessageComponentInterface, gérer la connexion (onOpen), le message (onMessage), la déconnexion (onClose) et les événements d'erreur (onError). La méthode run() démarre le serveur sur le port 8089. (Remarque: Le tutoriel manque le code côté client, qui serait nécessaire pour terminer l'exemple.)

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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 grâce à 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 Java
1664
14
Tutoriel PHP
1268
29
Tutoriel C#
1248
24
Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Apr 11, 2025 am 11:29 AM

Avez-vous déjà eu besoin d'un compte à rebours sur un projet? Pour quelque chose comme ça, il pourrait être naturel d'atteindre un plugin, mais c'est en fait beaucoup plus

Guide des attributs de données HTML Guide des attributs de données HTML Apr 11, 2025 am 11:50 AM

Tout ce que vous avez toujours voulu savoir sur les attributs de données dans HTML, CSS et JavaScript.

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

Pendant que vous n'étiez pas à la recherche, les gradients CSS se sont améliorés Pendant que vous n'étiez pas à la recherche, les gradients CSS se sont améliorés Apr 11, 2025 am 09:16 AM

Une chose qui a attiré mon œil sur la liste des fonctionnalités pour le polyfill à gradient conique () de Lea.

Comment construire des composants Vue dans un thème WordPress Comment construire des composants Vue dans un thème WordPress Apr 11, 2025 am 11:03 AM

La directive en ligne en ligne nous permet de construire des composants Vue riches en tant qu'amélioration progressive par rapport au balisage WordPress existant.

Une comparaison des fournisseurs de formulaires statiques Une comparaison des fournisseurs de formulaires statiques Apr 16, 2025 am 11:20 AM

Essayons de savoir un terme ici: "fournisseur de formulaire statique". Vous apportez votre HTML

PHP est A-OK pour les modèles PHP est A-OK pour les modèles Apr 11, 2025 am 11:04 AM

Les modèles PHP obtiennent souvent un mauvais rap pour faciliter le code inférieur - mais cela ne doit pas être le cas. Voyons comment les projets PHP peuvent appliquer un base

Les trois types de code Les trois types de code Apr 11, 2025 pm 12:02 PM

Chaque fois que je commence un nouveau projet, j'organise le code que je regarde en trois types ou catégories si vous le souhaitez. Et je pense que ces types peuvent être appliqués à

See all articles