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