Maison >développement back-end >tutoriel php >Guide de développement PHP Websocket pour implémenter la fonction de traduction en temps réel

Guide de développement PHP Websocket pour implémenter la fonction de traduction en temps réel

PHPz
PHPzoriginal
2023-12-18 17:52:521987parcourir

PHP Websocket开发指南,实现实时翻译功能

Guide de développement PHP Websocket : implémentation de la fonction de traduction en temps réel

Introduction :
Avec le développement d'Internet, la communication en temps réel devient de plus en plus importante dans divers scénarios d'application. En tant que protocole de communication émergent, Websocket offre une bonne prise en charge de la communication en temps réel. Cet article vous expliquera en détail comment utiliser PHP pour développer des applications Websocket et combinera la fonction de traduction en temps réel pour démontrer son application spécifique.

1. Qu'est-ce que le protocole Websocket ?
Le protocole Websocket est un protocole de communication full-duplex sur une seule connexion TCP. Par rapport au protocole HTTP traditionnel, Websocket présente les avantages suivants :

  1. Temps réel : Websocket prend en charge la communication bidirectionnelle, c'est-à-dire que le serveur peut envoyer activement des données au client pour obtenir des mises à jour en temps réel.
  2. Faible latence : une fois que le protocole Websocket a établi une connexion, il ne créera plus de connexion, réduisant ainsi les opérations de prise de contact dans le protocole HTTP et réduisant la latence.
  3. Économisez la bande passante : le protocole Websocket utilise des trames binaires pour transmettre des données, ce qui peut réduire considérablement la charge du réseau par rapport à la transmission de texte dans le protocole HTTP.

2. Préparatifs pour le développement d'applications Websocket avec PHP

  1. Installation de PHP
    Tout d'abord, vous devez vous assurer que PHP est installé et que les extensions associées sont activées : sockets, pcntl, posix.
  2. Installer Composer
    Exécutez la commande suivante dans le répertoire du projet pour installer :

    $ curl -sS https://getcomposer.org/installer | php
    $ mv composer.phar /usr/local/bin/composer
  3. Installer la bibliothèque Rachet
    Exécutez la commande suivante dans le répertoire du projet pour installer la bibliothèque Rachet :

    $ composer require cboden/ratchet

3. Utilisez Rachet pour implémentez le serveur Websocket

  1. Créez le fichier server.php
    Créez le fichier server.php dans le répertoire racine du projet et écrivez le code suivant dans le fichier :

    <?php
    require 'vendor/autoload.php';
    
    use RatchetMessageComponentInterface;
    use RatchetConnectionInterface;
    use RatchetServerIoServer;
    use RatchetHttpHttpServer;
    use RatchetWebSocketWsServer;
    
    class Translator implements MessageComponentInterface
    {
     protected $clients;
    
     public function __construct()
     {
         $this->clients = new SplObjectStorage;
     }
    
     public function onOpen(ConnectionInterface $conn)
     {
         $this->clients->attach($conn);
         echo "New client connected: " . $conn->resourceId . "
    ";
     }
    
     public function onMessage(ConnectionInterface $from, $msg)
     {
         // 实现翻译功能,此处省略具体代码
         $translatedMsg = translate($msg);
    
         foreach ($this->clients as $client) {
             $client->send($translatedMsg);
         }
     }
    
     public function onClose(ConnectionInterface $conn)
     {
         $this->clients->detach($conn);
         echo "Client disconnected: " . $conn->resourceId . "
    ";
     }
    
     public function onError(ConnectionInterface $conn, Exception $e)
     {
         echo "An error occurred: " . $e->getMessage() . "
    ";
         $conn->close();
     }
    }
    
    $server = IoServer::factory(
     new HttpServer(
         new WsServer(
             new Translator()
         )
     ),
     8080
    );
    
    echo "Server is running...
    ";
    $server->run();
  2. Démarrez le serveur Websocket
    Exécutez la commande suivante dans le terminal pour démarrer le serveur Websocket :

    $ php server.php

    De cette façon, le serveur Websocket a été démarré avec succès.

4. Implémentez la page front-end
Créez le fichier index.html dans le répertoire racine du projet et écrivez le code suivant dans le fichier :

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Websocket实时翻译</title>
</head>
<body>
    <input type="text" id="input">
    <button onclick="send()">翻译</button>
    <br>
    <div id="output"></div>

    <script>
        var conn = new WebSocket('ws://localhost:8080');

        conn.onopen = function(e) {
            console.log("Connection established!");
        };

        conn.onmessage = function(e) {
            var output = document.getElementById('output');
            output.innerHTML += '<p>' + e.data + '</p>';
        };

        function send() {
            var input = document.getElementById('input');
            conn.send(input.value);
            input.value = '';
        }
    </script>
</body>
</html>

5. Exécutez l'exemple

  1. Démarrez le serveur Websocket
    . Exécutez la commande suivante dans la commande du terminal pour démarrer le serveur Websocket :

    $ php server.php
  2. Exécutez la page frontale
    Ouvrez le fichier index.html dans le navigateur et vous verrez une simple page de traduction en temps réel.
  3. Utilisez la fonction de traduction en temps réel
    Entrez le contenu que vous souhaitez traduire dans la zone de saisie, cliquez sur le bouton « Traduire » et vous pourrez voir les résultats de la traduction en temps réel ci-dessous.

Conclusion :
Cet article présente brièvement les étapes de base du développement de PHP Websocket et fournit des exemples de code combinés à la fonction de traduction en temps réel. J'espère qu'il vous sera utile d'apprendre et de développer des applications Websocket. En tant que technologie permettant de réaliser une communication en temps réel, Websocket offre un large éventail de perspectives d'application dans des scénarios d'application réels. Les lecteurs peuvent développer et transformer cet exemple pour obtenir davantage de fonctions de 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