Bibliothèque WebSocket Ratchet : création en temps réel en PHP

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque WebSocket Ratchet pour PHP : création d'applications en temps réel



WebSocket est un protocole qui assure une communication bidirectionnelle entre le client et le serveur via une seule connexion permanente. Contrairement au HTTP traditionnel, où chaque requête ouvre une nouvelle connexion, WebSocket permet de transmettre des données en temps réel sans latence. Pour PHP, l'une des bibliothèques les plus populaires pour travailler avec WebSocket est Ratchet. Cette bibliothèque est construite sur ReactPHP et fournit une API simple et puissante pour créer des serveurs WebSocket.



Qu'est-ce que Ratchet ?



Ratchet est une bibliothèque PHP open source qui permet aux développeurs de créer des applications en temps réel, telles que des chats, des notifications, des jeux en ligne et des systèmes de surveillance. Elle abstrait la complexité du travail avec les sockets et les entrées-sorties asynchrones, en fournissant des classes et des interfaces pratiques.



Principales fonctionnalités de Ratchet :

  • Prise en charge de WebSocket selon la spécification RFC 6455
  • Intégration avec les serveurs HTTP (par exemple via ReactPHP)
  • Possibilité de créer ses propres gestionnaires de messages
  • Prise en charge de WAMP (WebSocket Application Messaging Protocol) pour Pub/Sub
  • Légèreté et hautes performances


Installation de Ratchet



L'installation de la bibliothèque se fait via Composer. Exécutez dans le terminal :



composer require cboden/ratchet


Après l'installation, un dossier vendor apparaîtra dans votre projet avec les dépendances nécessaires, y compris ReactPHP.



Création d'un serveur WebSocket simple



Considérons un exemple de base : créons un serveur qui accepte les connexions et renvoie un message de bienvenue. Pour cela, créez un fichier server.php :



<?phprequire 'vendor/autoload.php';

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

class MyWebSocket implements MessageComponentInterface { protected $clients;

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

public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "Nouvelle connexion : {$conn->resourceId}"; $conn->send("Bienvenue ! Votre ID : {$conn->resourceId}"); }

public function onMessage(ConnectionInterface $from, $msg) { echo "Message reçu de {$from->resourceId} : {$msg}"; // Envoyer à tous les clients foreach ($this->clients as $client) { if ($from !== $client) { $client->send("Message de {$from->resourceId} : {$msg}"); } } }

public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Connexion {$conn->resourceId} fermée"; }

public function onError(ConnectionInterface $conn, \\Exception $e) { echo "Erreur : {$e->getMessage()}"; $conn->close(); }}

$server = IoServer::factory( new HttpServer( new WsServer( new MyWebSocket() ) ), 8080);

echo "Serveur WebSocket démarré sur le port 8080...";$server->run();


Lancez le serveur avec la commande :



php server.php


Le serveur écoute maintenant sur le port 8080. Pour tester, vous pouvez utiliser n'importe quel client WebSocket, par exemple une extension de navigateur ou un simple code JavaScript.



Partie cliente en JavaScript



Créez un fichier HTML client.html :



<!DOCTYPE html><html><head>    <title>Client WebSocket</title></head><body>    <input type="text" id="message" placeholder="En                    

Recommendations