import SockJS from "sockjs-client";
import Stomp from "stompjs";
// 入参为 socket url地址 监听的topic 以及需要传给后台的信息info
export default class socket{
constructor(topic,url){
this.url = url || process.env.VUE_APP_BASE_URL;
this.topic = topic;
this.stompClient = null;
}
connect(info,cb){
let socket = new SockJS(this.url+'/endpointNiu');
this.stompClient = Stomp.over(socket);
this.stompClient.connect({}, (frame) => {
this.stompClient.send("/subscriber", {},info);
this.stompClient.subscribe(this.topic, (message) => {
if (message.body && message.body !="{}") {
var item =JSON.parse(message.body)
cb(item);
}
},(error)=>{
console.log('error====>'+error);
});
});
}
disconnect() {
if (this.stompClient) {
this.stompClient.disconnect();
}
}
}
import socket from "@/api/socket";
data() {
return{
socket: null,
}
}
mounted() {
//初始化 socket
this.socket = new socket("/xxx");
},
methods:{
initWebSocket() {
//如果存在socket链接 则先断开原来的 再连接最新的
if (this.socket) {
this.socket.disconnect();
}
this.socket.connect("xx", xxx);
},
}