django-vue-admin/web/src/api/websocket.js

77 lines
1.7 KiB
Python

import ElementUI from 'element-ui'
import util from '@/libs/util'
function initWebSocket (e) {
const token = util.cookies.get('token')
if (token) {
const wsUri = process.env.VUE_APP_WEBSOCKET + '/ws/' + token + '/'
this.socket = new WebSocket(wsUri)// 这里面的this都指向vue
this.socket.onerror = webSocketOnError
this.socket.onmessage = webSocketOnMessage
this.socket.onclose = closeWebsocket
}
}
function webSocketOnError (e) {
ElementUI.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)
if (data.contentType === 'SYSTEM') {
ElementUI.Notification({
title: 'websocket',
message: data.content,
type: 'success',
position: 'bottom-right',
duration: 3000
})
} else if (data.contentType === 'ERROR') {
ElementUI.Notification({
title: '',
message: data.content,
type: 'error',
position: 'bottom-right',
duration: 0
})
} else if (data.contentType === 'INFO') {
ElementUI.Notification({
title: '温馨提示',
message: data.content,
type: 'success',
position: 'bottom-right',
duration: 0
})
} else {
console.log(data.content)
return data
}
}
// 关闭websiocket
function closeWebsocket () {
console.log('连接已关闭...')
// close()
this.socket.close()
}
/**
* 发送消息
* @param message
*/
function webSocketSend (message) {
this.socket.send(JSON.stringify(message))
}
export default {
initWebSocket, closeWebsocket, webSocketSend,webSocketOnMessage
}