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

2 weeks ago
  1. /*
  2. 加载js时创建长连接
  3. */
  4. if(window.WebSocket){
  5. // console.log("浏览器支持websocket");
  6. }else{
  7. console.log("浏览器不支持websocket");
  8. }
  9. var g_pServer = null;
  10. nativeWebsocket=async function(obj){
  11. let callBack = obj.CallBack; //回调函数
  12. let isAsync = typeof(callBack) == "function"; //判断回调函数是不是方法
  13. let callData = obj.CallData;
  14. if(isAsync){
  15. if(callData&&window[callData]){
  16. // console.info("异步模式 复用websocket控件...");
  17. window[callData].send(obj.data);
  18. window[callData].onmessage = function(event) {
  19. callBack(event.data,callData);
  20. };
  21. }else{
  22. // console.info("异步模式 新建websocket对象...");
  23. let g_pLisServer = "g_pLisServer" + new Date().getTime();
  24. window[g_pLisServer] = new WebSocket(obj.url);
  25. window[g_pLisServer].onopen = function(event) {
  26. window[g_pLisServer].send(obj.data);
  27. };
  28. window[g_pLisServer].onmessage = function(event) {
  29. callBack(event.data,g_pLisServer);
  30. // window[g_pLisServer].close(); //成功关闭当前链接
  31. };
  32. window[g_pLisServer].onclose = function(event) {
  33. console.info("异步模式websocket-lis关闭..."+g_pLisServer);
  34. };
  35. window[g_pLisServer].onerror = function(event) {
  36. console.info("异步模式websocket-lis异常..."+g_pLisServer);
  37. };
  38. }
  39. }else{
  40. if(!g_pServer||g_pServer.readyState==3||g_pServer.readyState==2){
  41. g_pServer = new WebSocket(obj.url);
  42. // console.info("websocket链接未创建或正在关闭或已关闭/或没有连接成功时重新创建...");
  43. return new Promise((resolve, reject) => {
  44. g_pServer.onopen =function(event) {
  45. g_pServer.send(obj.data);
  46. };
  47. g_pServer.onmessage =function(event) {
  48. resolve(event.data); //通过promise对象data属性传递接口返回值
  49. };
  50. g_pServer.onclose = function(event) {
  51. console.info("websocket关闭...g_pServer");
  52. };
  53. g_pServer.onerror = function(event) {
  54. console.info("websocket异常...g_pServer");
  55. };
  56. });
  57. }else{
  58. // console.log("已有常连接");
  59. return new Promise((resolve, reject) => {
  60. g_pServer.send(obj.data)
  61. g_pServer.onmessage =function(event) {
  62. resolve(event.data); //通过promise对象返回接口同步数据
  63. };
  64. });
  65. }
  66. }
  67. }