Maison  >  Article  >  interface Web  >  Pourquoi mon serveur PHP WebSocket ne parvient-il pas à établir une connexion et affiche l'erreur « Firefox ne peut pas établir de connexion avec le serveur à l'adresse ws://localhost:12345/\ » ?

Pourquoi mon serveur PHP WebSocket ne parvient-il pas à établir une connexion et affiche l'erreur « Firefox ne peut pas établir de connexion avec le serveur à l'adresse ws://localhost:12345/\ » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 18:18:03547parcourir

Why is my PHP WebSocket server failing to establish a connection and showing the error

Comment créer un serveur WebSocket en PHP

Problème

Créer un serveur WebSocket en PHP peut être difficile, en particulier lorsque vous utilisez des bibliothèques obsolètes ou boguées. Malgré de nombreuses tentatives, le code fourni dans la question ne parvient pas à établir une connexion, ce qui entraîne l'erreur : "Firefox ne peut pas établir de connexion avec le serveur à l'adresse ws://localhost:12345/."

Solution

Pour surmonter ce problème, envisagez les étapes suivantes :

  1. Comprendre le protocole WebSocket : Lisez le brouillon de WebSocket pour comprendre le fonctionnement interne du protocole. Reportez-vous-y régulièrement tout au long du processus de développement.
  2. Créez une procédure de prise de contact : Implémentez une procédure de prise de contact appropriée basée sur les instructions du projet WebSocket.
  3. Gérer Masquage des messages WebSocket : Les données envoyées et reçues via WebSocket sont généralement masquées. Implémentez une logique d'encodage et de décodage pour en tenir compte.
  4. Gérer la fermeture de la connexion : Ajoutez une logique pour gérer la fermeture des connexions WebSocket.
  5. Utilisez une bibliothèque WebSocket fiable. : Pensez à utiliser une bibliothèque WebSocket bien entretenue comme Ratchet ou Symfony Websocket.
  6. Test et dépannage : Testez minutieusement le serveur et déboguez toute erreur ou problème de connexion.

Exemple de code

Le code PHP suivant fournit un exemple simple d'implémentation de serveur WebSocket à l'aide de Ratchet :

<code class="php">use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class MyWebSocketHandler implements MessageComponentInterface
{
    private $clients;

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

    public function onOpen(ConnectionInterface $conn)
    {
        // Send a welcome message to the client
        $conn->send('Welcome to the WebSocket server!');
        
        // Add the client to the collection
        $this->clients->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        // Send the message to all connected clients
        foreach ($this->clients as $client) {
            $client->send($msg);
        }
    }

    public function onClose(ConnectionInterface $conn)
    {
        // Remove the client from the collection
        $this->clients->detach($conn);
    }

    public function onError(ConnectionInterface $conn, \Exception $e)
    {
        // Handle errors
        $conn->close();
    }
}</code>

Conclusion

Création d'un serveur WebSocket dans PHP nécessite une compréhension approfondie du protocole WebSocket et une bonne implémentation de ses fonctionnalités. En suivant les étapes présentées et en exploitant des bibliothèques fiables, il est possible d'établir un serveur WebSocket robuste qui facilite la communication en temps réel.

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