const status = ref(0)

const connectSocketInit = () => {
  socketTask.value = uni.connectSocket({
    url: BASE_URL + '/ws/socket',
    success: () => {
      console.log('WebSocket连接创建成功');
    }
  });

  socketTask.value.onOpen(() => {
    console.log('WebSocket连接已打开');
    send()
  });

  socketTask.value.onError(() => {
    console.log('WebSocket连接打开失败,请检查!', res)
    reconnect()
  })


  socketTask.value.onClose(() => {
    console.log('WebSocket连接已关闭');
  });

  socketTask.value.onMessage((res) => {
    if (status.value == 0) {
      stopTask(2)
    }
    uni.hideLoading()
    // if (((status.value == 0 && res.data.includes("连接")) || (status.value == 1 && !res.data.includes("连接"))) && !(dataList.value.some(e => e == res.data))) {
      
      dataList.value.push(res.data)
      console.log("存储", dataList.value)
    // }
  })


}

const send = () => {
  let obj = {
    id: 1,
  }
  console.log("发送参数", obj)
  socketTask.value.send({
    data: JSON.stringify(obj)
  })

}

//重新连接
const reconnect = () => {
  console.log("重连")
  //停止发送心跳
  clearInterval(reconnectTimeOut.value)
  //如果不是人为关闭的话,进行重连
  reconnectTimeOut.value = setInterval(() => {
    connectSocketInit();
  }, 5000)
}



const stopTask = (status) => {
  if (status == 1) {
    uni.hideLoading()
    uni.redirectTo({
      url: ''
    })
    // uni.closeSocket()
  }
  if (status != 2) {
    socketTask.value.close();
    clearInterval(reconnectTimeOut.value)
  }
}



onLoad(() => {
  connectSocketInit()
})

onUnload(() => {
  console.log("销毁")
  // uni.closeSocket()
  stopTask(0)
})

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐