前端Websocket.js

文章介绍了如何在JavaScript中创建和管理WebSocket连接,包括URL构建、错误处理、连接状态变化和消息接收的回调函数。同时提到了如何在HTTPS环境下加密连接。
摘要由CSDN通过智能技术生成

import config from "@/lib/config";

import { getLocalAdd, getToken } from "@/utils/auth";

import toolObj from '@/utils/toolObj';

const ZUUL_WS_PORT = ':' + ZUUL_PORT_WS

const userId = sessionStorage.getItem('userId')

let hstHead = window.location.href.split(":")[0];

export const getMyWebSocket = (modularName, callback) => {

  let accessToken = getToken(),

    localAdd = getLocalAdd(),

    hst = config.ip.split(":")[0] + ZUUL_WS_PORT,

    myWebsocket = null;

 

  if (!accessToken) return false;

  const uuid = toolObj.uuid()

  console.log('uuid===', uuid);

  let url = "ws://" + hst + "/websocket" + "?userId=" + userId + "&modularName=" + modularName + "&uuid=" + uuid;

  if (hstHead === 'https') {

    url = "wss://" + hst + "/websocket" + "?userId=" + userId + "&modularName=" + modularName + "&uuid=" + uuid;

  }



 

  const initSocket = () => {

    myWebsocket = new WebSocket(url);

    console.log(myWebsocket, "myWebsocket", hst, "hst");

  };

  initSocket();

  //连接发生错误的回调方法

  myWebsocket.onerror = () => {

    console.log("WebSocket连接发生错误");

    // clearInterval(sendTime);

    callback('lose')

  };

  //连接成功建立的回调方法

  myWebsocket.onopen = () => {

    console.log("WebSocket连接成功");

    myWebsocket.send("pong")

    // clearInterval(sendTime);

    /* myWebsocket.send(`{message:"cbb",To:"${userId}_index"}`)

      sendTime = setInterval(() => {

        myWebsocket.send(`{message:"cbb",To:"${userId}_index"}`)

      }, 5000) */

  };

  //接收到消息的回调方法

  myWebsocket.onmessage = function (event) {

    console.log('接收到消息的回调方法event', event);

    if (event.data !== 'ping') {

      let data = JSON.parse(event.data)

      console.log('data', data);

      if (typeof callback === "function") {

        callback(data);

      }

    }

  };

  //连接关闭的回调方法

  myWebsocket.onclose = () => {

    console.log("webSocket连接关闭!");

    // myWebsocket = null

    // clearInterval(sendTime);

  };

  return myWebsocket

};



 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值