feat(websoket): ✨ websoket
websoket优化
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import {ElNotification as message} from 'element-plus'
|
import {ElNotification as message} from 'element-plus'
|
||||||
import store from '@/store'
|
|
||||||
import {Session} from "/@/utils/storage";
|
import {Session} from "/@/utils/storage";
|
||||||
import {getWsBaseURL} from "/@/utils/baseUrl";
|
import {getWsBaseURL} from "/@/utils/baseUrl";
|
||||||
|
// @ts-ignore
|
||||||
import socket from '@/types/api/socket'
|
import socket from '@/types/api/socket'
|
||||||
|
|
||||||
const websocket: socket = {
|
const websocket: socket = {
|
||||||
@@ -77,10 +77,11 @@ const websocket: socket = {
|
|||||||
websocket.send(data)
|
websocket.send(data)
|
||||||
}, websocket.hearbeat_interval)
|
}, websocket.hearbeat_interval)
|
||||||
},
|
},
|
||||||
send: (data, callback = null) => {
|
send: (data:string, callback = null) => {
|
||||||
// 开启状态直接发送
|
// 开启状态直接发送
|
||||||
if (websocket.websocket.readyState === websocket.websocket.OPEN) {
|
if (websocket.websocket.readyState === websocket.websocket.OPEN) {
|
||||||
websocket.websocket.send(JSON.stringify(data))
|
websocket.websocket.send(JSON.stringify(data))
|
||||||
|
// @ts-ignore
|
||||||
callback && callback()
|
callback && callback()
|
||||||
} else {
|
} else {
|
||||||
clearInterval(websocket.hearbeat_timer)
|
clearInterval(websocket.hearbeat_timer)
|
||||||
|
|||||||
@@ -1,92 +0,0 @@
|
|||||||
import {Notification} from 'element-plus'
|
|
||||||
import store from '@/store'
|
|
||||||
import {Session} from "/@/utils/storage";
|
|
||||||
import {getWsBaseURL} from "/@/utils/baseUrl";
|
|
||||||
|
|
||||||
let socket=null;
|
|
||||||
function initWebSocket () {
|
|
||||||
const token = Session.get('token');
|
|
||||||
if (token) {
|
|
||||||
const wsUri = getWsBaseURL() + 'ws/' + token + '/'
|
|
||||||
this.socket = new WebSocket(wsUri)// 这里面的this都指向vue
|
|
||||||
this.socket.onerror = webSocketOnError
|
|
||||||
this.socket.onmessage = webSocketOnMessage
|
|
||||||
this.socket.onclose = closeWebsocket
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function webSocketOnError (e) {
|
|
||||||
Notification({
|
|
||||||
title: '',
|
|
||||||
message: 'WebSocket连接发生错误' + JSON.stringify(e),
|
|
||||||
type: 'error',
|
|
||||||
position: 'bottom-right',
|
|
||||||
duration: 3000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 接收消息
|
|
||||||
* @param e
|
|
||||||
* @returns {any}
|
|
||||||
*/
|
|
||||||
function webSocketOnMessage (e) {
|
|
||||||
const data = JSON.parse(e.data)
|
|
||||||
const { unread } = data
|
|
||||||
store.dispatch('d2admin/messagecenter/setUnread', unread || 0)
|
|
||||||
if (data.contentType === 'SYSTEM') {
|
|
||||||
Notification({
|
|
||||||
title: '系统消息',
|
|
||||||
message: data.content,
|
|
||||||
type: 'success',
|
|
||||||
position: 'bottom-right',
|
|
||||||
duration: 3000
|
|
||||||
})
|
|
||||||
} else if (data.contentType === 'ERROR') {
|
|
||||||
Notification({
|
|
||||||
title: '',
|
|
||||||
message: data.content,
|
|
||||||
type: 'error',
|
|
||||||
position: 'bottom-right',
|
|
||||||
duration: 0
|
|
||||||
})
|
|
||||||
} else if (data.contentType === 'INFO') {
|
|
||||||
Notification({
|
|
||||||
title: '温馨提示',
|
|
||||||
message: data.content,
|
|
||||||
type: 'success',
|
|
||||||
position: 'bottom-right',
|
|
||||||
duration: 0
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
Notification({
|
|
||||||
title: '温馨提示',
|
|
||||||
message: data.content,
|
|
||||||
type: 'info',
|
|
||||||
position: 'bottom-right',
|
|
||||||
duration: 3000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 关闭websiocket
|
|
||||||
function closeWebsocket () {
|
|
||||||
console.log('连接已关闭...')
|
|
||||||
Notification({
|
|
||||||
title: 'websocket',
|
|
||||||
message: '连接已关闭...',
|
|
||||||
type: 'danger',
|
|
||||||
position: 'bottom-right',
|
|
||||||
duration: 3000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送消息
|
|
||||||
* @param message
|
|
||||||
*/
|
|
||||||
function webSocketSend (message) {
|
|
||||||
this.socket.send(JSON.stringify(message))
|
|
||||||
}
|
|
||||||
export default {
|
|
||||||
initWebSocket, closeWebsocket, webSocketSend
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user