/* 加载js时创建长连接 */ if(window.WebSocket){ // console.log("浏览器支持websocket"); }else{ console.log("浏览器不支持websocket"); } var g_pServer = null; nativeWebsocket=async function(obj){ let callBack = obj.CallBack; //回调函数 let isAsync = typeof(callBack) == "function"; //判断回调函数是不是方法 let callData = obj.CallData; if(isAsync){ if(callData&&window[callData]){ // console.info("异步模式 复用websocket控件..."); window[callData].send(obj.data); window[callData].onmessage = function(event) { callBack(event.data,callData); }; }else{ // console.info("异步模式 新建websocket对象..."); let g_pLisServer = "g_pLisServer" + new Date().getTime(); window[g_pLisServer] = new WebSocket(obj.url); window[g_pLisServer].onopen = function(event) { window[g_pLisServer].send(obj.data); }; window[g_pLisServer].onmessage = function(event) { callBack(event.data,g_pLisServer); // window[g_pLisServer].close(); //成功关闭当前链接 }; window[g_pLisServer].onclose = function(event) { console.info("异步模式websocket-lis关闭..."+g_pLisServer); }; window[g_pLisServer].onerror = function(event) { console.info("异步模式websocket-lis异常..."+g_pLisServer); }; } }else{ if(!g_pServer||g_pServer.readyState==3||g_pServer.readyState==2){ g_pServer = new WebSocket(obj.url); // console.info("websocket链接未创建或正在关闭或已关闭/或没有连接成功时重新创建..."); return new Promise((resolve, reject) => { g_pServer.onopen =function(event) { g_pServer.send(obj.data); }; g_pServer.onmessage =function(event) { resolve(event.data); //通过promise对象data属性传递接口返回值 }; g_pServer.onclose = function(event) { console.info("websocket关闭...g_pServer"); }; g_pServer.onerror = function(event) { console.info("websocket异常...g_pServer"); }; }); }else{ // console.log("已有常连接"); return new Promise((resolve, reject) => { g_pServer.send(obj.data) g_pServer.onmessage =function(event) { resolve(event.data); //通过promise对象返回接口同步数据 }; }); } } }