import { makeSocket } from '@/utils/index' import eventBus from '@/utils/eventBus' import { getActivePage } from '@/utils/hook' let socket = null export function initSocket() { if (socket) { return socket } makeSocket({ pageInfo: 'all', retry: true }).then((res) => { destroySocket() socket = res socket.onMessage(handleMessage) socket.onError(handleError) socket.onRetry = () => { handleRetry() } }) } export function destroySocket() { if (socket) { socket.close() socket = null } } function handleError(error) { console.log('error', error) destroySocket() } function handleRetry() { socket.onMessage(handleMessage) socket.onError(handleError) } function handleMessage(data) { if (data.type === 'fnFileAnalysisInform') { eventBus.emit('singleFileAnalysis', data) } if (data.type === 'allFileAnalysisSuccess') { let page = getActivePage() if (!page || page.route != 'pages/print/index') { uni.showToast({ title: '文件全部解析完成,可以下单', icon: 'none', duration: 2000 }) } destroySocket() } }