You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* 加载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对象返回接口同步数据
}; }); } } }
|