//已连接的客户端
|
var client = {};
|
//重连时间间隔
|
var RECONN_TIME = 10 * 1000;
|
/**
|
*
|
* @param username 用户名
|
* @param host 主机
|
* @param project 项目名
|
*/
|
function createWebSocket(username, project) {
|
var websocket = null;
|
username = encodeURI(username);
|
//判断当前浏览器是否支持WebSocket
|
if ('WebSocket' in window) {
|
websocket = new WebSocket('ws://' + location.host + '/' + project + '/websocket?name='+username);
|
client.pms = websocket;
|
client.pmsname = username;
|
client.pmshost = location.host;
|
client.pmsproject = project;
|
|
} else {
|
console.info('当前浏览器 Not support websocket');
|
}
|
//连接发生错误的回调方法
|
websocket.onerror = function () {
|
console.info("WebSocket连接发生错误" + project + "-----" + username);
|
};
|
|
//连接成功建立的回调方法
|
websocket.onopen = function () {
|
console.info("WebSocket连接成功" + project + "-----" + username);
|
|
}
|
//接收到消息的回调方法
|
websocket.onmessage = function (event) {
|
//PMS
|
var data = event.data;
|
var json = JSON.parse(data);
|
console.info(json);
|
var service = json.service; //消息来自哪个服务器 wct or pmd
|
var type = json.type; //消息的类型 1-单耗告警,2-质量告警,0-普通消息
|
if(service=="wct"){
|
if(type == "1"){
|
|
}else if(type == "2"){
|
|
}
|
}else if(service=="pms"){
|
if(type=="0"){
|
$.messager.alert('提示', json.content, 'info');
|
}
|
|
}
|
|
|
}
|
|
//连接关闭的回调方法
|
websocket.onclose = function () {
|
console.info("webSocket已关闭!" + project + "-----" + username);
|
if(websocket===client.pms){
|
setTimeout(function () {
|
console.info("尝试重连pms websocket");
|
client.pms = null;
|
createWebSocket(client.pmsname,client.pmsproject);
|
},RECONN_TIME)
|
|
}
|
}
|
//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
|
window.onbeforeunload = function () {
|
closeWebSocket();
|
}
|
|
//关闭WebSocket连接
|
function closeWebSocket() {
|
websocket.close();
|
}
|
|
}
|