微调socket.ts

This commit is contained in:
D 2023-09-14 00:44:44 +08:00
parent f0f196712f
commit 38a3740478

View File

@ -2,9 +2,11 @@ import { getToken } from '@/utils/auth'
import { generateUUID } from '@/utils/geek'; import { generateUUID } from '@/utils/geek';
let _socket: UniApp.SocketTask; let _socket: UniApp.SocketTask;
let _callback: { [key: string]: (data: any) => void } = {} let _callback: { [key: string]: (data: any) => void } = {}
const enableJSON = true // 开启JSON解析消息需要开启JSON解析消息才能开启uuid和event
const enableUUID = true // 需要接收信息中包含uuid字段uuid优先级高于event const enableUUID = true // 需要接收信息中包含uuid字段uuid优先级高于event
const enableEvent = true // 需要接收信息中包含event字段 const enableEvent = true // 需要接收信息中包含event字段
interface ConnectSocketOption extends UniApp.ConnectSocketOption { interface ConnectSocketOption extends UniApp.ConnectSocketOption {
headers: { headers: {
isToken: boolean isToken: boolean
@ -24,6 +26,9 @@ export default {
if (getToken() && !isToken) { if (getToken() && !isToken) {
options.header['Authorization'] = 'Bearer ' + getToken() options.header['Authorization'] = 'Bearer ' + getToken()
} }
if(_socket !== undefined){
_socket.close({})
}
_socket = uni.connectSocket({ _socket = uni.connectSocket({
url: options.url, url: options.url,
header: options.header, header: options.header,
@ -33,11 +38,13 @@ export default {
_socket.onError(reject) _socket.onError(reject)
_socket.onOpen(resolve) _socket.onOpen(resolve)
_socket.onMessage(res => { _socket.onMessage(res => {
let data = JSON.parse((res || {}).data) if(enableJSON){
if (enableUUID && (data || {}).uuid !== undefined) { let data = JSON.parse((res || {}).data)
_callback[data.uuid](data) if (enableUUID && (data || {}).uuid !== undefined) {
} else if (enableEvent && (data || {}).event !== undefined) { _callback[data.uuid](data)
_callback[data.event](data) } else if (enableEvent && (data || {}).event !== undefined) {
_callback[data.event](data)
}
} }
}) })
}) })
@ -46,7 +53,7 @@ export default {
* *
* @param msg json字符串 * @param msg json字符串
* @param uuid ,uuidtrue自动生成uuidflase表示该消息不需要单独处理 * @param uuid ,uuidtrue自动生成uuidflase表示该消息不需要单独处理
* @returns * @returns
*/ */
send(msg: any, uuid: string | boolean = false) { send(msg: any, uuid: string | boolean = false) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -70,14 +77,15 @@ export default {
*/ */
close() { close() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
_socket.close({
fail: reject
})
let onclose = _socket.onClose let onclose = _socket.onClose
_socket.onClose(res => { _socket.onClose(res => {
resolve(res) resolve(res)
_socket.onClose(onclose) _socket.onClose = onclose
}) })
_socket.close({
fail: reject
})
}) })
}, },
/** /**
@ -103,14 +111,18 @@ export default {
*/ */
onMessage(callback: (data: any) => void) { onMessage(callback: (data: any) => void) {
_socket.onMessage(res => { _socket.onMessage(res => {
let data = JSON.parse((res || {}).data) if(enableJSON){
if (enableUUID && (data || {}).uuid !== undefined) { let data = JSON.parse((res || {}).data)
_callback[data.uuid](res) if (enableUUID && (data || {}).uuid !== undefined) {
delete _callback[data.uuid] _callback[data.uuid](res)
} else if (enableEvent && (data || {}).event !== undefined) { delete _callback[data.uuid]
_callback[data.event](res) } else if (enableEvent && (data || {}).event !== undefined) {
} else { _callback[data.event](res)
callback(data) } else {
callback(data)
}
}else{
callback(res.data)
} }
}) })
}, },