zhuguifei
2026-03-10 2c1fd10c6fbabb8e9f0e9f07fe66fb36c008e883
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//已连接的客户端
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();
    }
 
}