feat(websoket): websoket

websoket优化
This commit is contained in:
猿小天
2023-03-14 23:52:30 +08:00
parent e79f790d72
commit ab9beff867
2 changed files with 3 additions and 94 deletions

View File

@@ -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)

View File

@@ -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
}