rt-sim-training-client/src/utils/stomp.js

37 lines
1.1 KiB
JavaScript
Raw Normal View History

2019-07-02 16:29:52 +08:00
import Vue from 'vue';
import StompClient from '@/utils/sock';
import store from '@/store';
export const perpetualTopic = '/user/topic/message'; // 公用topic
export const displayTopic = '/user/queue/simulation'; // 其他仿真topic
export const screenTopic = '/user/queue/simulation/bigScreen'; // 大屏仿真
export const planTopic = '/user/queue/simulation/plan'; // 测试运行仿真
// 建立连接并订阅地址
export function creatSubscribe(topic, header) {
try {
if (!Vue.prototype.$stomp) {
Vue.prototype.$stomp = new StompClient();
}
Vue.prototype.$stomp.subscribe(topic, callback, header);
} catch (error) {
console.error('websocket订阅失败');
}
}
// 回调函数
function callback(Response) {
if (store) {
let data = JSON.parse(Response.body);
store.dispatch('socket/setStomp', data);
} else {
callback(Response);
}
}
// 删除订阅路径
export function clearSubscribe(topic) {
if (Vue.prototype.$stomp) {
Vue.prototype.$stomp.unsubscribe(topic);
}
}