//已连接的客户端 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(); } }