111 lines
2.3 KiB
Vue
111 lines
2.3 KiB
Vue
<template>
|
||
<div>
|
||
<div id="log-box" v-html="content"></div>
|
||
</div>
|
||
</template>
|
||
<script>
|
||
import request from '@/utils/request2';
|
||
|
||
var _this;
|
||
var socket;
|
||
var sit;
|
||
export default {
|
||
name: "log",
|
||
data() {
|
||
return {
|
||
modelId: '',
|
||
type: '',
|
||
content: ''
|
||
}
|
||
},
|
||
mounted() {
|
||
_this = this;
|
||
},
|
||
methods: {
|
||
close() {
|
||
if (sit) {
|
||
clearInterval(sit);
|
||
}
|
||
_this.content = "";
|
||
if (socket) {
|
||
socket.close();
|
||
}
|
||
},
|
||
init({modelId, type}) {
|
||
_this.content = "";
|
||
_this.modelId = modelId;
|
||
_this.type = type;
|
||
console.log(`当前modelId为${modelId},type为${type}`);
|
||
socket = new WebSocket(`ws://47.103.128.32:10050/socket/file-tail?modelId=${modelId}&type=${type}`);
|
||
//连接打开事件
|
||
socket.onopen = function () {
|
||
console.log("Socket 已打开");
|
||
};
|
||
//收到消息事件
|
||
socket.onmessage = function (msg) {
|
||
if (msg.data.indexOf('连接成功,sessionId=') != -1) {
|
||
var sessionId = msg.data.slice(15);
|
||
console.log(sessionId)
|
||
} else {
|
||
// console.log(msg);
|
||
_this.content += '<p>' + msg.data + "</p>";
|
||
_this.$nextTick(() => {
|
||
document.getElementById("log-box").scrollTop = 100000;
|
||
});
|
||
}
|
||
};
|
||
//连接关闭事件
|
||
socket.onclose = function () {
|
||
console.log("Socket已关闭");
|
||
};
|
||
//发生了错误事件
|
||
socket.onerror = function () {
|
||
alert("Socket发生了错误");
|
||
}
|
||
|
||
|
||
//创建心跳,防止掉线
|
||
sit = setInterval(() => {
|
||
let op = {
|
||
data: "heart",
|
||
};
|
||
sendJson(op);
|
||
}, 5000);
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
function sendJson(data) {
|
||
// 0 CONNECTING 连接尚未建立
|
||
// 1 OPEN WebSocket的链接已经建立
|
||
// 2 CLOSING 连接正在关闭
|
||
// 3 CLOSED 连接已经关闭或不可用
|
||
if (socket.readyState == 2 || socket.readyState == 3) {
|
||
clearInterval(sit);
|
||
sit = null;
|
||
} else {
|
||
socket.send(JSON.stringify(data));
|
||
}
|
||
}
|
||
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
#log-box {
|
||
height: 800px;
|
||
overflow-y: auto;
|
||
background-color: #c2c2c2;
|
||
border-radius: 5px;
|
||
padding: 0 25px;
|
||
}
|
||
|
||
#log-box p {
|
||
line-height: 30px;
|
||
font-size: 16px;
|
||
text-indent: 2em;
|
||
color: #313131;
|
||
}
|
||
</style>
|