|
import SockJS from 'sockjs-client'
import Stomp from 'stompjs'
import {socketUrl} from '@/constants'
import EventBus from './bus'
var socket = null
var peronStompClient = null
var shipStompClient = null
export default function initWebSocket(params) {
personStomp(params)
shipStomp(params)
}
function personStomp(params) {
if (socketUrl.startsWith('http') || socketUrl.startsWith('https')) {
socket = new SockJS(socketUrl)// 连接服务端
peronStompClient = Stomp.over(socket)
} else { // SockJS支持ws前缀
peronStompClient = Stomp.client(socketUrl)
}
params.uuid = uuid()
peronStompClient.connect(params, (frame) => {
successCallback()
}, () => {
personStomp(params)
})
}
function shipStomp(params) {
if (socketUrl.startsWith('http') || socketUrl.startsWith('https')) {
socket = new SockJS(socketUrl)// 连接服务端
shipStompClient = Stomp.over(socket)
} else { // SockJS支持ws前缀
shipStompClient = Stomp.client(socketUrl)
}
params.uuid = uuid()
shipStompClient.connect(params, (frame) => {
successShipCallback()
}, () => {
shipStomp(params)
})
}
function successShipCallback() {
shipStompClient.subscribe('ship', msg => {
EventBus.$emit('ship', msg.body)
})
}
function successCallback() {
peronStompClient.subscribe('personnel', msg => {
EventBus.$emit('person', msg.body)
})
}
function uuid() {
var s = []
var hexDigits = '0123456789abcdef'
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
}
s[14] = '4' // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1) // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = '-'
var uuid = s.join('')
return uuid
}
|