You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.7 KiB
HTML
129 lines
3.7 KiB
HTML
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>WebSocket连通测试</title>
|
|
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" />
|
|
<link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon" />
|
|
</head>
|
|
<body>
|
|
|
|
<input id="message" type="text">
|
|
<button id="btn">发送消息</button>
|
|
<div id="show">
|
|
</div>
|
|
<script type="text/javascript">
|
|
|
|
// var ws = new WebSocket("ws://localhost:9998/ldapi/v1/websocket/ccuwebsocket");
|
|
/*
|
|
ws.onerror = function(e) {
|
|
console.log('已关闭');
|
|
};
|
|
ws.onopen = function(e) {
|
|
console.log('握手成功');
|
|
ws.send('123456789');
|
|
}
|
|
ws.onclose = function() {
|
|
console.log('已关闭');
|
|
}
|
|
ws.onmessage = function(e) {
|
|
console.log('收到消息');
|
|
console.log(e);
|
|
}
|
|
*/
|
|
|
|
|
|
var lockReconnect = false;//避免重复连接
|
|
var wsUrl = "ws://localhost:9998/vhwcapi/v1/websocket/ccuwebsocket";
|
|
var ws;
|
|
var tt;
|
|
function createWebSocket() {
|
|
try {
|
|
ws = new WebSocket(wsUrl);
|
|
init();
|
|
} catch(e) {
|
|
console.log('catch');
|
|
reconnect(wsUrl);
|
|
}
|
|
}
|
|
function init() {
|
|
ws.onclose = function () {
|
|
console.log('链接关闭');
|
|
reconnect(wsUrl);
|
|
};
|
|
ws.onerror = function() {
|
|
console.log('发生异常了');
|
|
reconnect(wsUrl);
|
|
};
|
|
ws.onopen = function () {
|
|
//心跳检测重置
|
|
console.log('onopen 心跳检测重置');
|
|
heartCheck.start();
|
|
};
|
|
ws.onmessage = function (event) {
|
|
//拿到任何消息都说明当前连接是正常的
|
|
let node = document.createElement("div");
|
|
node.innerHTML = "<h5>" + event.data + "</h5>";
|
|
show.appendChild(node);
|
|
console.log('onmessage 接收到消息');
|
|
heartCheck.start();
|
|
}
|
|
}
|
|
function reconnect(url) {
|
|
if(lockReconnect) {
|
|
return;
|
|
};
|
|
lockReconnect = true;
|
|
//没连接上会一直重连,设置延迟避免请求过多
|
|
tt && clearTimeout(tt);
|
|
tt = setTimeout(function () {
|
|
createWebSocket(url);
|
|
lockReconnect = false;
|
|
}, 4000);
|
|
}
|
|
//心跳检测
|
|
var heartCheck = {
|
|
timeout: 180000,
|
|
timeoutObj: null,
|
|
serverTimeoutObj: null,
|
|
start: function(){
|
|
console.log('start');
|
|
var self = this;
|
|
this.timeoutObj && clearTimeout(this.timeoutObj);
|
|
this.serverTimeoutObj && clearTimeout(this.serverTimeoutObj);
|
|
this.timeoutObj = setTimeout(function(){
|
|
//这里发送一个心跳,后端收到后,返回一个心跳消息,
|
|
console.log('55555');
|
|
ws.send("123456789");
|
|
self.serverTimeoutObj = setTimeout(function() {
|
|
console.log(111);
|
|
console.log(ws);
|
|
ws.close();
|
|
// createWebSocket();
|
|
}, self.timeout);
|
|
|
|
}, this.timeout)
|
|
}
|
|
}
|
|
createWebSocket(wsUrl);
|
|
|
|
|
|
let btn = document.getElementById("btn");
|
|
let message = document.getElementById("message");
|
|
let show = document.getElementById("show");
|
|
btn.addEventListener("click", function () {
|
|
let data = message.value;
|
|
console.log(data);
|
|
if (data) {
|
|
ws.send(data);
|
|
} else {
|
|
alert("请输入消息后发送");
|
|
}
|
|
message.value = "";
|
|
});
|
|
// 关闭页面时候关闭ws
|
|
window.addEventListener("beforeunload", function(event) {
|
|
ws.close();
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |