| | |
| | | <el-main> |
| | | <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;"> |
| | | <span style="font-size: 1rem; font-weight: bold;">控制台</span> |
| | | <div style="position: absolute; right: 17rem; top: 0.3rem;"> |
| | | 节点选择: <el-select size="mini" @change="chooseMediaChange" style="width: 18rem; margin-right: 8rem;" v-model="mediaServerChoose" placeholder="请选择" default-first-option> |
| | | <el-option |
| | | v-for="item in mediaServerList" |
| | | :key="item.id" |
| | | :label="item.id + '( ' + item.streamIp + ' )'" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <span >{{loadCount}}</span> |
| | | </div> |
| | | <div style="position: absolute; right: 1rem; top: 0.3rem;"> |
| | | <el-popover placement="bottom" width="750" height="300" trigger="click"> |
| | | <div style="height: 600px;overflow:auto;"> |
| | |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | <el-button type="primary" slot="reference" size="mini" @click="getServerConfig()">查看服务器配置</el-button> |
| | | <el-button type="primary" slot="reference" size="mini" @click="getServerConfig()">媒体服务器配置</el-button> |
| | | </el-popover> |
| | | <el-button style="margin-left: 1rem;" type="danger" size="mini" @click="reStartServer()">重启服务器</el-button> |
| | | <el-popover placement="bottom" width="750" height="300" trigger="click"> |
| | | <div style="height: 600px;overflow:auto;"> |
| | | <div v-for="(value, key, index) in wvpServerConfig"> |
| | | {{ key }}: |
| | | <table v-if="key != 'server.port'" class="table-c" cellspacing="0"> |
| | | <tr v-for="(subValue, subKey, subIndex) in value"> |
| | | <td style="width: 18rem; text-align: right;">{{ subKey }}</td> |
| | | <td style="width: 33rem; text-align:left">{{ subValue }}</td> |
| | | </tr> |
| | | </table> |
| | | <span v-if="key == 'server.port'">{{ value }}</span> |
| | | </div> |
| | | |
| | | <div style="margin-top: 1rem"> |
| | | 版本信息: |
| | | <table class="table-c" cellspacing="0"> |
| | | <tr v-for="(value, key, index) in wvpServerVersion"> |
| | | <td style="width: 18rem; text-align: right;">{{ key }}</td> |
| | | <td style="width: 33rem; text-align:left">{{ value }}</td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | <el-button type="primary" slot="reference" size="mini" @click="getWVPServerConfig()">信令服务器配置</el-button> |
| | | </el-popover> |
| | | <el-button style="margin-left: 1rem;" type="danger" size="mini" @click="reStartServer()">重启媒体服务器</el-button> |
| | | </div> |
| | | </div> |
| | | <el-row :gutter="30"> |
| | |
| | | |
| | | <script> |
| | | import uiHeader from './UiHeader.vue' |
| | | import MediaServer from './service/MediaServer' |
| | | |
| | | import echarts from 'echarts'; |
| | | export default { |
| | |
| | | chartInterval: 0, //更新图表统计图定时任务标识 |
| | | allSessionData: [], |
| | | visible: false, |
| | | serverConfig: {} |
| | | wvpVisible: false, |
| | | serverConfig: {}, |
| | | wvpServerConfig: {}, |
| | | wvpServerVersion: {}, |
| | | mediaServer : new MediaServer(), |
| | | mediaServerChoose : null, |
| | | loadCount : 0, |
| | | mediaServerList : [] |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.getAllSession(); |
| | | |
| | | this.initTable(); |
| | | this.updateData(); |
| | | this.chartInterval = setInterval(this.updateData, 3000); |
| | | this.mediaServer.getOnlineMediaServerList((data)=>{ |
| | | this.mediaServerList = data.data; |
| | | if (this.mediaServerList && this.mediaServerList.length > 0) { |
| | | this.mediaServerChoose = this.mediaServerList[0].id |
| | | this.loadCount = this.mediaServerList[0].count; |
| | | this.updateData(); |
| | | } |
| | | }) |
| | | }, |
| | | destroyed() { |
| | | clearInterval(this.chartInterval); //释放定时任务 |
| | | }, |
| | | methods: { |
| | | chooseMediaChange: function (val) { |
| | | this.loadCount = 0 |
| | | this.initTable() |
| | | this.updateData(); |
| | | }, |
| | | updateData: function () { |
| | | this.getThreadsLoad(); |
| | | this.getLoadCount(); |
| | | this.getAllSession(); |
| | | }, |
| | | /** |
| | | * 获取线程状态 |
| | | */ |
| | | getThreadsLoad: function () { |
| | | let that = this; |
| | | this.$axios({ |
| | | if (that.mediaServerChoose != null) { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/zlm/index/api/getThreadsLoad' |
| | | }).then(function (res) { |
| | | url: '/zlm/' + that.mediaServerChoose +'/index/api/getThreadsLoad' |
| | | }).then(function (res) { |
| | | if (res.data.code == 0) { |
| | | that.tableOption.xAxis.data.push(new Date().toLocaleTimeString('chinese', { |
| | | hour12: false |
| | | })); |
| | | that.table1Option.xAxis.data.push(new Date().toLocaleTimeString('chinese', { |
| | | hour12: false |
| | | })); |
| | | that.tableOption.xAxis.data.push(new Date().toLocaleTimeString('chinese', { |
| | | hour12: false |
| | | })); |
| | | that.table1Option.xAxis.data.push(new Date().toLocaleTimeString('chinese', { |
| | | hour12: false |
| | | })); |
| | | |
| | | for (var i = 0; i < res.data.data.length; i++) { |
| | | if (that.tableOption.series[i] === undefined) { |
| | | let data = { |
| | | data: [], |
| | | type: 'line' |
| | | }; |
| | | let data1 = { |
| | | data: [], |
| | | type: 'line' |
| | | }; |
| | | data.data.push(res.data.data[i].delay); |
| | | data1.data.push(res.data.data[i].load); |
| | | that.tableOption.series.push(data); |
| | | that.table1Option.series.push(data1); |
| | | } else { |
| | | that.tableOption.series[i].data.push(res.data.data[i].delay); |
| | | that.table1Option.series[i].data.push(res.data.data[i].load); |
| | | } |
| | | for (var i = 0; i < res.data.data.length; i++) { |
| | | if (that.tableOption.series[i] === undefined) { |
| | | let data = { |
| | | data: [], |
| | | type: 'line' |
| | | }; |
| | | let data1 = { |
| | | data: [], |
| | | type: 'line' |
| | | }; |
| | | data.data.push(res.data.data[i].delay); |
| | | data1.data.push(res.data.data[i].load); |
| | | that.tableOption.series.push(data); |
| | | that.table1Option.series.push(data1); |
| | | } else { |
| | | that.tableOption.series[i].data.push(res.data.data[i].delay); |
| | | that.table1Option.series[i].data.push(res.data.data[i].load); |
| | | } |
| | | that.tableOption.dataZoom[0].start = that.charZoomStart; |
| | | that.tableOption.dataZoom[0].end = that.charZoomEnd; |
| | | that.table1Option.dataZoom[0].start = that.charZoomStart; |
| | | that.table1Option.dataZoom[0].end = that.charZoomEnd; |
| | | //that.myChart = echarts.init(document.getElementById('ThreadsLoad')); |
| | | that.myChart.setOption(that.tableOption, true); |
| | | // that.myChart1 = echarts.init(document.getElementById('WorkThreadsLoad')); |
| | | that.myChart1.setOption(that.table1Option, true); |
| | | } |
| | | that.tableOption.dataZoom[0].start = that.charZoomStart; |
| | | that.tableOption.dataZoom[0].end = that.charZoomEnd; |
| | | that.table1Option.dataZoom[0].start = that.charZoomStart; |
| | | that.table1Option.dataZoom[0].end = that.charZoomEnd; |
| | | //that.myChart = echarts.init(document.getElementById('ThreadsLoad')); |
| | | that.myChart.setOption(that.tableOption, true); |
| | | // that.myChart1 = echarts.init(document.getElementById('WorkThreadsLoad')); |
| | | that.myChart1.setOption(that.table1Option, true); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | getLoadCount: function (){ |
| | | let that = this; |
| | | if (that.mediaServerChoose != null) { |
| | | that.mediaServer.getMediaServer(that.mediaServerChoose, (data)=>{ |
| | | if (data.code == 0) { |
| | | that.loadCount = data.data.count |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | initTable: function () { |
| | | let that = this; |
| | |
| | | getAllSession: function () { |
| | | let that = this; |
| | | that.allSessionData = []; |
| | | console.log("地址:" + '/zlm/index/api/getAllSession'); |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/zlm/index/api/getAllSession' |
| | | url: '/zlm/' + that.mediaServerChoose +'/index/api/getAllSession' |
| | | }).then(function (res) { |
| | | res.data.data.forEach(item => { |
| | | let data = { |
| | |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/zlm/index/api/getServerConfig' |
| | | url: '/zlm/' + that.mediaServerChoose +'/index/api/getServerConfig' |
| | | }).then(function (res) { |
| | | that.serverConfig = res.data.data[0]; |
| | | that.visible = true; |
| | | }); |
| | | }, |
| | | getWVPServerConfig: function () { |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/api/server/config' |
| | | }).then(function (res) { |
| | | console.log(res) |
| | | that.wvpServerConfig = res.data.data; |
| | | that.wvpVisible = true; |
| | | }); |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/api/server/version' |
| | | }).then(function (res) { |
| | | console.log(res) |
| | | that.wvpServerVersion = res.data.data; |
| | | that.wvpVisible = true; |
| | | }); |
| | | }, |
| | | reStartServer: function () { |
| | |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/zlm/index/api/restartServer' |
| | | url: '/zlm/' + that.mediaServerChoose +'/index/api/restartServer' |
| | | }).then(function (res) { |
| | | that.getAllSession(); |
| | | if (res.data.code == 0) { |
| | |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/zlm/index/api/kick_session&id=' + id |
| | | url: '/zlm/' + that.mediaServerChoose +'/index/api/kick_session&id=' + id |
| | | }).then(function (res) { |
| | | that.getAllSession(); |
| | | that.$message({ |