php使用webSocket实现Echarts长连接自动刷新的解决方案(1):前端获取后端JSON数据

简介: php使用webSocket实现Echarts长连接自动刷新的解决方案(1):前端获取后端JSON数据

项目需求

Echarts图表自动获取服务器端推送的数据,实现图表的自动渲染更新;


前端代码

引入JS包

   <script src="js/jquery-3.3.1.min.js"></script>
    <script src="js/echarts.min.js"></script>

HTML代码

<div id="main" style="width: 1000px;height: 600px;"></div>


JS代码

webSocket连接函数封装;

//webSocket连接;
    function WebSocketServer() {
        var wsClient = null; //WS客户端对象
        //判断是否支持WebSocket
        if (!window.WebSocket) {
            window.WebSocket = window.MozWebSocket;
        }
        if (window.WebSocket) {
            wsClient = new WebSocket('ws://127.0.0.1:9090');
            wsClient.onmessage = function (e) {
                //console.log(e.data);
                //图表渲染数据格式处理;
                var newData = JSON.parse(e.data);
                var dataName = [], dataList = [];
                for (var i = 0; i < newData.length; i++) {
                    dataName.push(newData[i].vname);
                    dataList.push(newData[i].vdata);
                }
                //console.log(newData[0].vdata);
                //渲染图表;
                getLine(dataName, dataList);
            };
            //连接服务器;
            wsClient.onopen = function () {
                console.log('WS客户端已经成功连接到服务器上');
                wsClient.send('getPeerInfo'); //向WS服务器发送一个消息
            };
            //断开服务器;
            wsClient.onclose = function (e) {
                console.info("WS客户端到服务器的连接已经断开" + JSON.stringify(e));
            };
        } else {
            alert("你的浏览器不支持 WebSocket!");
        }
    }


Echarts图表函数封装

  /*Echarts*/
    function getLine(dataName, dataList) {
        var myChart = echarts.init(document.getElementById('main'));
        var option = {
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'cross',
                    label: {
                        backgroundColor: '#6a7985'
                    }
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: dataName
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: dataList,
                type: 'line'
            }]
        };
        myChart.setOption(option);
        window.addEventListener("resize", function () {
            myChart.resize();
        });
    }


Done!

相关文章
|
4月前
|
JSON PHP 数据格式
|
8天前
|
JSON JavaScript 前端开发
服务器通信:使用WebSocket与后端实时交互
【4月更文挑战第24天】WebSocket为解决服务器与客户端实时双向通信问题而生,常用于聊天、游戏和实时通知等场景。本文通过4步教你实现WebSocket通信:1) 客户端使用JavaScript创建WebSocket连接;2) 监听`open`、`message`和`close`事件;3) 使用`send`方法发送数据;4) 使用`close`方法关闭连接。服务器端则需处理连接和数据发送,具体实现依后端技术而定。WebSocket为现代Web应用的实时交互提供了强大支持。
|
2月前
|
Web App开发 前端开发 JavaScript
Spring Boot整合 mybatisplus(后端) Vue+echarts+Element UI+axios(前端)---前后端项目实例demo
Spring Boot整合 mybatisplus(后端) Vue+echarts+Element UI+axios(前端)---前后端项目实例demo
27 1
|
2月前
|
JSON JavaScript PHP
PHP把unicode编码的json字符串转中文
PHP把unicode编码的json字符串转中文
13 0
|
2月前
|
数据可视化 前端开发 定位技术
ECharts前端教程
ECharts前端教程
51 3
php案例:$_ENV的数据怎么样才能显示出来.$_ENV的简单运用
php案例:$_ENV的数据怎么样才能显示出来.$_ENV的简单运用
php案例:$_ENV的数据怎么样才能显示出来.$_ENV的简单运用
php案例:用代码的方式创建目录+文件+写入数据(都由你定)
php案例:用代码的方式创建目录+文件+写入数据(都由你定)
php案例:用代码的方式创建目录+文件+写入数据(都由你定)
|
4月前
|
JSON PHP 数据格式