当前位置:   article > 正文

js中使用websocket_websocket js

websocket js

 后端地址是http的   websocket地址 ws开头;后端地址是https的,websocket地址wss开头;

对于websocket没有跨域的问题

  1. import { MessageBox } from 'element-ui';
  2. let url = "ws://192.168.0.181:8000"; //请求的后端地址
  3. let websocket = null;//全局WebSocket对象
  4. let lockReconnect = false; // 网络断开重连
  5. let wsCreateHandler = null; // 创建连接
  6. export function createWebSocket(fn){
  7. try{
  8. if ('WebSocket' in window) {
  9. websocket = new WebSocket(`${url}/webSocketServer?token=${getToken()}`);
  10. } else if ('MozWebSocket' in window) {
  11. websocket = new MozWebSocket(`${url}/webSocketServer?token=${getToken()}`);
  12. } else {
  13. websocket = new SockJS(`${url}/sockjs/webSocketServer?token=${getToken()}`);
  14. }
  15. }catch {
  16. reconnect();
  17. return;
  18. }
  19. websocket.onopen = function(event) {
  20. // websocket.send("连接成功");
  21. console.log("服务已连接")
  22. };
  23. websocket.onmessage = function(event){
  24. var data=JSON.parse(event.data);
  25. if(data.type === 'exit'){
  26. MessageBox.alert(data.name, '提示', {
  27. dangerouslyUseHTMLString: true,
  28. showConfirmButton: true,
  29. type: 'warning',
  30. }).then(()=>{
  31. store.dispatch('user/resetToken').then(() => {
  32. removeToken();
  33. // window.location.reload();
  34. router.replace("/login")
  35. });
  36. });
  37. }
  38. fn(data);
  39. };
  40. websocket.onclose = function(event) {
  41. console.log("服务连接关闭")
  42. };
  43. websocket.onerror = function(event) {
  44. console.log(event,"连接出错")
  45. };
  46. }
  47. /**
  48. * 异常处理
  49. * 处理可以检测到的异常,并尝试重新连接
  50. */
  51. function reconnect() {
  52. if (lockReconnect) {
  53. return;
  54. }
  55. console.log("reconnect");
  56. lockReconnect = true;
  57. // 没链接上会一直连接,设置延迟,避免过多请求
  58. wsCreateHandler && clearTimeout(wsCreateHandler);
  59. wsCreateHandler = setTimeout(function() {
  60. console.log("-----websoket异常-------");
  61. createWebSocket();
  62. lockReconnect = false;
  63. }, 1000);
  64. }
  65. export function websocketClose() {
  66. console.log('执行了关闭')
  67. websocket.close(); //手动关闭websocket
  68. }

注意:系统退出后需要关闭websocket,尤其是平台需要单账号登陆的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/884058?site
推荐阅读
相关标签
  

闽ICP备14008679号