二级和app修改
This commit is contained in:
62
apps/hand-factory/utils/socketMeasure.js
Normal file
62
apps/hand-factory/utils/socketMeasure.js
Normal file
@@ -0,0 +1,62 @@
|
||||
import config from '@/config'
|
||||
|
||||
/**
|
||||
* 测量数据 WebSocket(与 l2/socket/index.vue 类似)
|
||||
* 默认订阅 type=track_measure
|
||||
*/
|
||||
export function createMeasureSocket({
|
||||
type = 'track_measure',
|
||||
onOpen,
|
||||
onClose,
|
||||
onError,
|
||||
onMessage
|
||||
} = {}) {
|
||||
let socket = null
|
||||
let manualClose = false
|
||||
|
||||
const wsBase = (config.wsUrl || config.baseUrl || '').replace(/^http/, 'ws')
|
||||
const url = `${wsBase}/websocket?type=${type}`
|
||||
|
||||
function connect() {
|
||||
manualClose = false
|
||||
socket = new WebSocket(url)
|
||||
|
||||
socket.onopen = () => {
|
||||
onOpen && onOpen()
|
||||
}
|
||||
|
||||
socket.onmessage = (evt) => {
|
||||
onMessage && onMessage(evt.data)
|
||||
}
|
||||
|
||||
socket.onerror = (err) => {
|
||||
onError && onError(err)
|
||||
}
|
||||
|
||||
socket.onclose = (evt) => {
|
||||
onClose && onClose(evt)
|
||||
if (!manualClose) {
|
||||
setTimeout(connect, 3000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function close() {
|
||||
manualClose = true
|
||||
if (socket) {
|
||||
socket.close(1000, 'client close')
|
||||
socket = null
|
||||
}
|
||||
}
|
||||
|
||||
function send(data) {
|
||||
if (socket && socket.readyState === WebSocket.OPEN) {
|
||||
socket.send(JSON.stringify(data));
|
||||
} else {
|
||||
console.error('WebSocket is not open. Cannot send message.');
|
||||
}
|
||||
}
|
||||
|
||||
return { connect, close, send }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user