Maison  >  Article  >  développement back-end  >  PHP et WebSocket : le meilleur moyen d'obtenir des mises à jour des données en temps réel

PHP et WebSocket : le meilleur moyen d'obtenir des mises à jour des données en temps réel

WBOY
WBOYoriginal
2023-12-17 10:26:351234parcourir

PHP和WebSocket: 实现实时数据更新的最佳方法

PHP et WebSocket : le meilleur moyen d'obtenir des mises à jour de données en temps réel

Introduction :
Avec le développement de la technologie réseau, les mises à jour de données en temps réel deviennent de plus en plus importantes dans de nombreux sites Web et applications. Bien que le modèle de requête-réponse HTTP traditionnel puisse mettre à jour les données, il utilise peu les ressources du serveur et la bande passante. En revanche, les mises à jour de données en temps réel basées sur WebSocket peuvent fournir un moyen efficace et à faible latence de transmettre des données au client, et conviennent à des scénarios tels que le chat en temps réel, les statistiques en temps réel et la surveillance en temps réel.

Cet article expliquera comment utiliser PHP et WebSocket pour réaliser des mises à jour de données en temps réel et fournira des exemples de code spécifiques.

1. Qu'est-ce que WebSocket ?
WebSocket est un protocole de communication full-duplex sur une seule connexion TCP. Il établit une connexion persistante entre le client et le serveur et permet une communication bidirectionnelle en temps réel entre les deux parties. Différent du modèle de requête-réponse HTTP, WebSocket permet au serveur de transmettre activement des données au client, et le client peut également envoyer activement des données au serveur. Étant donné que WebSocket est basé sur TCP, il peut fournir une faible latence et une transmission de données efficace.

2. Comment implémenter PHP et WebSocket
Pour implémenter la communication WebSocket en PHP, vous pouvez utiliser des bibliothèques tierces telles que Ratchet ou Swoole. Cet article utilisera Ratchet comme exemple.

  1. Installer Ratchet
    Tout d'abord, nous devons utiliser Composer pour installer Ratchet :
composer require cboden/ratchet
  1. Créer un serveur WebSocket
    Ensuite, nous créons une classe de serveur WebSocket pour gérer la connexion et la transmission de données du client :
use RatchetMessageComponentInterface;
use RatchetConnectionInterface;

class MyWebSocketServer 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})
";
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        // 处理接收到的数据
        // ...

        // 发送数据到所有连接的客户端
        foreach ($this->clients as $client) {
            $client->send($msg);
        }
    }

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

    public function onError(ConnectionInterface $conn, Exception $e)
    {
        echo "An error has occurred: {$e->getMessage()}
";
        $conn->close();
    }
}
  1. Démarrer le serveur WebSocket
    Enfin, dans le script PHP, nous créons une instance de serveur WebSocket et la démarrons :
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;
use RatchetServerIoServer;

require dirname(__DIR__) . '/vendor/autoload.php';

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

$server->run();

IV Exemple de code pour implémenter la mise à jour des données en temps réel
Maintenant que nous avons terminé la création et le démarrage du serveur WebSocket. , nous montrerons ensuite comment utiliser JavaScript pour se connecter au serveur WebSocket et obtenir des effets de mise à jour des données en temps réel.

  1. Code JavaScript front-end :

    var socket = new WebSocket('ws://localhost:8080');
    
    socket.onopen = function() {
     console.log('WebSocket连接已打开');
    };
    
    socket.onmessage = function(e) {
     var data = JSON.parse(e.data);
     // 处理接收到的数据
     // ...
    };
    
    socket.onclose = function() {
     console.log('WebSocket连接已关闭');
    };
    
    socket.onerror = function(error) {
     console.log('WebSocket错误:', error);
    };
  2. Exemple d'envoi de données côté serveur :
    Côté serveur, on peut utiliser le code suivant pour envoyer des données à tous les clients connectés :
// 在服务器端代码中
$msg = json_encode(['message' => 'Hello, client!']);
foreach ($this->clients as $client) {
    $client->send($msg);
}

Conclusion :
Cet article explique comment utiliser PHP et WebSocket pour réaliser des mises à jour de données en temps réel. Nous avons utilisé la bibliothèque tierce Ratchet pour créer le serveur WebSocket et fourni des exemples de code spécifiques. Grâce à WebSocket, nous pouvons obtenir une faible latence et une transmission efficace des données en temps réel, offrant ainsi une meilleure expérience utilisateur. J'espère que cet article sera utile aux développeurs qui souhaitent utiliser PHP et WebSocket pour réaliser des mises à jour de données 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