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

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-02-27 10:24:11229parcourir

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:

<code class="language-bash">composer require cboden/ratchet</code>

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

<code class="language-json">{
    "require": {
        "cboden/ratchet": "^0.4.4"
    }
}</code>

Création du serveur WebSockets

Créer server.php avec le code suivant:

<code class="language-php"><?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();</code>

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:
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