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;
网友评论