Maison cadre php Workerman Développement Workerman : Comment implémenter un système de visualisation de données en temps réel basé sur le protocole HTTP

Développement Workerman : Comment implémenter un système de visualisation de données en temps réel basé sur le protocole HTTP

Nov 07, 2023 am 08:01 AM
workerman 数据可视化 http协议

Développement Workerman : Comment implémenter un système de visualisation de données en temps réel basé sur le protocole HTTP

Workerman est un framework de communication réseau PHP hautes performances qui peut créer rapidement des fonctions telles que la communication en temps réel, l'envoi de messages et la visualisation de données. Cet article expliquera comment utiliser Workerman pour développer un système de visualisation de données en temps réel basé sur le protocole HTTP et fournira des exemples de code spécifiques.

1. Conception du système

Ce système adopte l'architecture B/S, c'est-à-dire que le navigateur (Browser) et le serveur (Server) communiquent via le protocole HTTP.

1. Côté serveur :

(1) Utilisez le framework Workerman pour établir un serveur HTTP et écoutez le port par défaut (80) 

(2) Obtenez des données en temps réel via des scripts PHP et renvoyez les données au serveur ; navigateur au format JSON ;

(3) Utilisez le protocole Websocket pour établir une communication en temps réel entre le serveur et le client, qui est utilisé pour gérer la situation où plusieurs clients envoient des requêtes en même temps.

2. Client :

(1) Utiliser HTML, CSS et JavaScript pour créer des pages frontales, y compris une interface de visualisation de données et une interface de demande de données ;

(2) Établir une connexion Websocket avec le serveur via JavaScript pour obtenir un résultat réel ; -Push de données temporelles et visualisation.

2. Implémentation spécifique

1. Côté serveur :

(1) Utilisez Composer pour installer le framework Workerman :

composer require workerman/workerman
Copier après la connexion

(2) Créez le fichier index.php et construisez un serveur HTTP :

<?php
require_once __DIR__ . '/vendor/autoload.php';//引入Workerman框架
use WorkermanProtocolsHttpRequest;
use WorkermanProtocolsHttpResponse;
use WorkermanWorker;

$http_worker = new Worker("http://0.0.0.0:80");//监听默认端口80

$http_worker->onMessage = function (Request $request) {
    $path = $request->path();//获取请求路径
    if ($path == '/') {//处理请求,返回HTML页面
        $response_str = file_get_contents(__DIR__ . '/index.html');
        $response = new Response(200, [], $response_str);
        $request->send($response);
    } elseif ($path == '/data') {//处理请求,返回JSON数据
        $data = getData();//获取实时数据
        $response = new Response(200, [], json_encode($data));//将数据转化为JSON格式
        $request->send($response);
    }
};

$http_worker->onWorkerStart = function () {
    global $ws_worker;
    $ws_worker = new Worker("websocket://0.0.0.0:8080");//监听WebSocket端口8080

    $ws_worker->count = 1;//设置Worker进程数

    $ws_worker->onMessage = function ($connection, $data) {
        $message = json_decode($data, true);//接收来自客户端的消息,并解析JSON格式数据
        switch ($message['type']) {
            case 'subscribe':
                //TODO 处理订阅请求,并发送数据
                break;
            case 'unsubscribe':
                //TODO 处理取消订阅请求
                break;
            default:
                break;
        }
    };

    Worker::runAll();//运行HTTP服务器和WebSocket服务器
};

//TODO 获取实时数据
function getData()
{
    return [];
}
Copier après la connexion

(3) Implémentez le protocole WebSocket :

Après le démarrage du serveur Http, vous devez créer un nouveau serveur WebSocket et écouter le port spécifié pour la communication en temps réel entre le client et le serveur. Dans le rappel onMessage, différentes demandes sont traitées en fonction de différents types de messages et les données en temps réel sont transmises au client abonné.

$ws_worker = new Worker("websocket://0.0.0.0:8080");//监听WebSocket端口8080

$ws_worker->count = 1;//设置Worker进程数

$ws_worker->onMessage = function ($connection, $data) {
    $message = json_decode($data, true);//接收来自客户端的消息,并解析JSON格式数据
    switch ($message['type']) {
        case 'subscribe':
            //TODO 处理订阅请求,并发送数据
            break;
        case 'unsubscribe':
            //TODO 处理取消订阅请求
            break;
        default:
            break;
    }
};
Copier après la connexion

2. Client :

(1) Page HTML :

Dans la page HTML, vous devez utiliser WebSocket pour établir une connexion et vous abonner aux données. Lorsque de nouvelles données arrivent, le graphique de visualisation correspondant doit être mis à jour. Ici, nous prenons ECharts comme exemple pour montrer comment utiliser JavaScript pour réaliser la visualisation des données.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>实时数据可视化</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.2.1/echarts.min.js"></script>
</head>
<body>
<div id="chart" style="width: 800px;height:400px;"></div>
<script>
    const socket = new WebSocket('ws://localhost:8080');//建立WebSocket连接

    //订阅请求
    socket.onopen = () => {
        socket.send(JSON.stringify({type: 'subscribe', data: {}}));
    };

    //接收来自服务器的消息
    socket.onmessage = (event) => {
        const message = JSON.parse(event.data);
        if (message.type === 'data') {//更新图表
            const chart = echarts.init(document.getElementById('chart'));
            const option = {
                xAxis: {
                    type: 'category',
                    data: message.data.xAxisData
                },
                yAxis: {
                    type: 'value'
                },
                series: [{
                    data: message.data.seriesData,
                    type: 'line'
                }]
            };
            chart.setOption(option);
        }
    };

    //取消订阅请求
    window.onbeforeunload = () => {
        socket.send(JSON.stringify({type: 'unsubscribe', data: {}}));
    };
</script>
</body>
</html>
Copier après la connexion

(2) Code JavaScript :

Dans le code JavaScript, vous devez surveiller les événements de connexion et de message de WebSocket, et effectuer différents traitements en fonction des différents types de messages, tels que l'abonnement aux données en temps réel et la mise à jour des graphiques visuels. , etc.

const socket = new WebSocket('ws://localhost:8080');//建立WebSocket连接

//订阅请求
socket.onopen = () => {
    socket.send(JSON.stringify({type: 'subscribe', data: {}}));
};

//接收来自服务器的消息
socket.onmessage = (event) => {
    const message = JSON.parse(event.data);
    if (message.type === 'data') {//更新图表
        const chart = echarts.init(document.getElementById('chart'));
        const option = {
            xAxis: {
                type: 'category',
                data: message.data.xAxisData
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: message.data.seriesData,
                type: 'line'
            }]
        };
        chart.setOption(option);
    }
};

//取消订阅请求
window.onbeforeunload = () => {
    socket.send(JSON.stringify({type: 'unsubscribe', data: {}}));
};
Copier après la connexion

3. Résumé

Cet article présente comment utiliser le framework Workerman pour développer un système de visualisation de données en temps réel basé sur le protocole HTTP et fournit des exemples de code spécifiques. La communication en temps réel entre le client et le serveur via WebSocket peut améliorer la vitesse de réponse du système et les capacités de traitement simultané, ce qui présente certains avantages.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Nov 08, 2023 pm 06:02 PM

Pour implémenter le téléchargement et le téléchargement de fichiers dans des documents Workerman, des exemples de code spécifiques sont requis Introduction : Workerman est un framework de communication réseau asynchrone PHP hautes performances, simple, efficace et facile à utiliser. Dans le développement réel, le téléchargement et le téléchargement de fichiers sont des exigences fonctionnelles courantes. Cet article explique comment utiliser le framework Workerman pour implémenter le téléchargement et le téléchargement de fichiers, et donne des exemples de code spécifiques. 1. Téléchargement de fichiers : le téléchargement de fichiers fait référence à l'opération de transfert de fichiers de l'ordinateur local vers le serveur. Ce qui suit est utilisé

Lequel est le meilleur, Swoole ou Workerman ? Lequel est le meilleur, Swoole ou Workerman ? Apr 09, 2024 pm 07:00 PM

Swoole et Workerman sont tous deux des frameworks de serveur PHP hautes performances. Connu pour son traitement asynchrone, ses excellentes performances et son évolutivité, Swoole convient aux projets qui doivent gérer un grand nombre de requêtes simultanées et un débit élevé. Workerman offre la flexibilité des modes asynchrone et synchrone, avec une API intuitive mieux adaptée à la facilité d'utilisation et aux projets gérant des volumes de concurrence inférieurs.

Comment mettre en œuvre l'utilisation de base des documents Workerman Comment mettre en œuvre l'utilisation de base des documents Workerman Nov 08, 2023 am 11:46 AM

Introduction à la façon d'implémenter l'utilisation de base des documents Workerman : Workerman est un framework de développement PHP hautes performances qui peut aider les développeurs à créer facilement des applications réseau à haute concurrence. Cet article présentera l'utilisation de base de Workerman, y compris l'installation et la configuration, la création de services et de ports d'écoute, la gestion des demandes des clients, etc. Et donnez des exemples de code correspondants. 1. Installez et configurez Workerman. Entrez la commande suivante sur la ligne de commande pour installer Workerman : c

Histogramme ECharts (horizontal) : comment afficher le classement des données Histogramme ECharts (horizontal) : comment afficher le classement des données Dec 17, 2023 pm 01:54 PM

Histogramme ECharts (horizontal) : comment afficher les classements des données nécessite des exemples de code spécifiques. Dans la visualisation de données, l'histogramme est un type de graphique couramment utilisé, qui peut afficher visuellement la taille et la relation relative des données. ECharts est un excellent outil de visualisation de données qui fournit aux développeurs des types de graphiques riches et de puissantes options de configuration. Cet article expliquera comment utiliser l'histogramme (horizontal) dans ECharts pour afficher le classement des données et donnera des exemples de code spécifiques. Tout d'abord, nous devons préparer des données contenant des données de classement

Tutoriel Graphviz : Créer des visualisations de données intuitives Tutoriel Graphviz : Créer des visualisations de données intuitives Apr 07, 2024 pm 10:00 PM

Graphviz est une boîte à outils open source qui peut être utilisée pour dessiner des tableaux et des graphiques. Elle utilise le langage DOT pour spécifier la structure du graphique. Après avoir installé Graphviz, vous pouvez utiliser le langage DOT pour créer des graphiques, tels que dessiner des graphiques de connaissances. Après avoir généré votre graphique, vous pouvez utiliser les puissantes fonctionnalités de Graphviz pour visualiser vos données et améliorer leur compréhensibilité.

Développement Workerman : Comment mettre en œuvre des appels vidéo en temps réel basés sur le protocole UDP Développement Workerman : Comment mettre en œuvre des appels vidéo en temps réel basés sur le protocole UDP Nov 08, 2023 am 08:03 AM

Développement Workerman : appel vidéo en temps réel basé sur le protocole UDP Résumé : Cet article présentera comment utiliser le framework Workerman pour implémenter la fonction d'appel vidéo en temps réel basée sur le protocole UDP. Nous aurons une compréhension approfondie des caractéristiques du protocole UDP et montrerons comment créer une application d'appel vidéo en temps réel simple mais complète à travers des exemples de code. Introduction : Dans la communication réseau, les appels vidéo en temps réel sont une fonction très importante. Le protocole TCP traditionnel peut rencontrer des problèmes tels que des retards de transmission lors de la mise en œuvre d'appels vidéo en temps réel. Et UDP

Comment implémenter la fonction de proxy inverse dans le document Workerman Comment implémenter la fonction de proxy inverse dans le document Workerman Nov 08, 2023 pm 03:46 PM

La façon d'implémenter la fonction de proxy inverse dans le document Workerman nécessite des exemples de code spécifiques.Introduction : Workerman est un cadre de communication réseau multi-processus PHP hautes performances qui offre des fonctions riches et des performances puissantes et est largement utilisé dans la communication Web en temps réel et à long terme. connexions. Parmi eux, Workerman prend également en charge la fonction de proxy inverse, qui peut réaliser l'équilibrage de charge et la mise en cache des ressources statiques lorsque le serveur fournit des services externes. Cet article explique comment utiliser Workerman pour implémenter la fonction de proxy inverse.

Comment implémenter la fonction de minuterie dans le document Workerman Comment implémenter la fonction de minuterie dans le document Workerman Nov 08, 2023 pm 05:06 PM

Comment implémenter la fonction timer dans le document Workerman Workerman est un puissant framework de communication réseau asynchrone PHP qui fournit une multitude de fonctions, y compris la fonction timer. Utilisez des minuteries pour exécuter du code dans des intervalles de temps spécifiés, ce qui est très approprié pour les scénarios d'application tels que les tâches planifiées et les interrogations. Ensuite, je présenterai en détail comment implémenter la fonction de minuterie dans Workerman et fournirai des exemples de code spécifiques. Étape 1 : Installer Workerman Tout d’abord, nous devons installer Worker

See all articles