js建立简单socket

如题所述

第1个回答  2022-06-10
import Stomp from "stompjs";

import SockJS from "sockjs-client";

let stompClient = null;

class Socket {

  constructor(socketMsg) {

    this.socketMsg = socketMsg;

  }

  /**

  * 向服务器发起websocket连接并发送CONNECT帧

  * @param {object} stompType 与服务器连接通道类型

  * @param {function} callback 回调方法

  */

  static startConnect( callback) {

    // 建立连接对象

    const socket = new SockJS(''连接地址);

    // 获取 STOMP 子协议的客户端对象

    stompClient = Stomp.over(socket);

    // 请求头验证,需要登陆

    const headers = {

      userId: JSON.parse(sessionStorage.getItem("id"))

    };

    // stompClient.debug = () => {};

    stompClient.connect(

      headers,

      (result) => {

        console.log("开始连接",result)

        // 订阅队列推送

        stompClient.subscribe('订阅1队列地址', res => {

          // 收到推送内容

          callback(data);

        });

        // 订阅被邀请

        stompClient.subscribe('订阅2地址', res => {

          callback(data);

        });

      },

      () => {

        // console.log(err);

      }

    );

  }

  // 主动发送消息

  static send(data) {

    stompClient.send(data.url, headers, data.sendMsg);

  }

  // 断开连接

  static disconnect() {

    stompClient.disconnect(() => {

      // console.log("连接关闭");

    });

  }

}

export default Socket;