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.
 
 
 
 
 

70 lines
2.2 KiB

/*
加载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对象返回接口同步数据
};
});
}
}
}