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

51 lines
1.5 KiB
JavaScript
Raw Normal View History

2019-07-02 16:29:52 +08:00
import Vue from 'vue';
import StompClient from '@/utils/sock';
2020-12-15 11:18:15 +08:00
import store from '@/store/index';
2019-07-02 16:29:52 +08:00
2019-11-15 16:32:23 +08:00
export const displayTopic = '/user/queue/simulation'; // 其他仿真topic
2021-02-04 17:17:45 +08:00
2019-11-12 17:27:30 +08:00
export const perpetualTopic = '/user/topic/message'; // 公用topic
2020-01-15 13:20:48 +08:00
export const roomTopic = '/user/queue/room'; // 房间topic
export const jl3dTopic = '/user/queue/simulation/jl3d'; // 三维topic
2021-02-04 17:17:45 +08:00
export const LPFTopic = '/user/queue/simulation/passenger'; // 客流topic
2019-07-02 16:29:52 +08:00
// 建立连接并订阅地址
export function creatSubscribe(topic, header) {
2019-11-05 16:40:36 +08:00
try {
if (!Vue.prototype.$stomp) {
Vue.prototype.$stomp = new StompClient();
}
2019-11-18 14:44:01 +08:00
Vue.prototype.$stomp.subscribe(topic, callback, header);
2019-11-05 16:40:36 +08:00
} catch (error) {
console.error('websocket订阅失败');
}
2019-07-02 16:29:52 +08:00
}
// 回调函数
function callback(Response) {
2019-11-05 16:40:36 +08:00
if (store) {
2021-04-23 09:01:12 +08:00
if (Response.headers.destination.includes('ats')) {
2021-04-23 17:43:45 +08:00
const data = {res:JSON.parse(Response.body), type:'ats' };
store.dispatch('socket/handleSock', data);
2021-04-23 09:01:12 +08:00
} else {
const data = JSON.parse(Response.body);
store.dispatch('socket/setStomp', data);
}
2019-11-05 16:40:36 +08:00
} else {
callback(Response);
}
2019-07-02 16:29:52 +08:00
}
// 删除订阅路径
export function clearSubscribe(topic) {
2019-11-05 16:40:36 +08:00
if (Vue.prototype.$stomp) {
Vue.prototype.$stomp.unsubscribe(topic);
}
2019-08-06 10:11:32 +08:00
}
// 断开连接
export function disconnect() {
if (Vue.prototype.$stomp) {
Vue.prototype.$stomp.disconnect();
}
}