From 0fbee8e93bda037152c55ac8721a65e322320477 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Sat, 24 Feb 2024 14:17:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=85=BC=E5=AE=B9=E5=AE=89=E5=8D=93?= =?UTF-8?q?=E5=92=8Cios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-ui/package.json | 2 +- im-uniapp/App.vue | 13 ++--- im-uniapp/common/request.js | 6 ++- im-uniapp/common/wssocket.js | 14 +++-- .../components/file-upload/file-upload.vue | 7 ++- .../components/image-upload/image-upload.vue | 4 +- im-uniapp/main.js | 1 - im-uniapp/manifest.json | 51 +++++++++++++++++-- im-uniapp/pages.json | 1 + im-uniapp/pages/chat/chat-box.vue | 11 ++-- im-uniapp/pages/group/group.vue | 2 +- im-uniapp/pages/login/login.vue | 2 + 12 files changed, 83 insertions(+), 31 deletions(-) diff --git a/im-ui/package.json b/im-ui/package.json index 0413271..d31873b 100644 --- a/im-ui/package.json +++ b/im-ui/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", - "build": "vue-cli-service build", + "build": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { diff --git a/im-uniapp/App.vue b/im-uniapp/App.vue index 0d4f50e..3984a47 100644 --- a/im-uniapp/App.vue +++ b/im-uniapp/App.vue @@ -3,7 +3,8 @@ import http from './common/request'; import * as enums from './common/enums'; import * as wsApi from './common/wssocket'; - + import UNI_APP from '@/.env.js' + export default { data() { return { @@ -26,7 +27,7 @@ initWebSocket() { let loginInfo = uni.getStorageSync("loginInfo") wsApi.init(); - wsApi.connect(process.env.WS_URL, loginInfo.accessToken); + wsApi.connect(UNI_APP.WS_URL, loginInfo.accessToken); wsApi.onConnect(() => { // 加载离线消息 this.pullPrivateOfflineMessage(store.state.chatStore.privateMsgMaxId); @@ -49,15 +50,15 @@ } }); wsApi.onClose((res) => { - // 3000是客户端主动关闭 - if (res.code != 3000) { + // 1000是客户端正常主动关闭 + if (res.code != 1000) { // 重新连接 uni.showToast({ title: '连接已断开,尝试重新连接...', icon: 'none', }) let loginInfo = uni.getStorageSync("loginInfo") - wsApi.reconnect(process.env.WS_URL, loginInfo.accessToken); + wsApi.reconnect(UNI_APP.WS_URL, loginInfo.accessToken); } }) }, @@ -204,7 +205,7 @@ }, exit() { console.log("exit"); - wsApi.close(); + wsApi.close(1000); uni.removeStorageSync("loginInfo"); uni.reLaunch({ url: "/pages/login/login" diff --git a/im-uniapp/common/request.js b/im-uniapp/common/request.js index 606c841..461ff6b 100644 --- a/im-uniapp/common/request.js +++ b/im-uniapp/common/request.js @@ -1,3 +1,5 @@ +import UNI_APP from '@/.env.js' + // 请求队列 let requestList = []; // 是否正在刷新中 @@ -11,7 +13,7 @@ const request = (options) => { } return new Promise(function(resolve, reject) { uni.request({ - url: process.env.BASE_URL + options.url, + url: UNI_APP.BASE_URL + options.url, method: options.method || 'GET', header: header, data: options.data || {}, @@ -71,7 +73,7 @@ const reqRefreshToken = (loginInfo) => { return new Promise(function(resolve, reject) { uni.request({ method: 'PUT', - url: process.env.BASE_URL + '/refreshToken', + url: UNI_APP.BASE_URL + '/refreshToken', header: { refreshToken: loginInfo.refreshToken }, diff --git a/im-uniapp/common/wssocket.js b/im-uniapp/common/wssocket.js index be7ff7f..7c6acff 100644 --- a/im-uniapp/common/wssocket.js +++ b/im-uniapp/common/wssocket.js @@ -46,17 +46,15 @@ let init = () => { uni.onSocketClose((res) => { console.log('WebSocket连接关闭') - isConnect = false; //断开后修改标识 + isConnect = false; closeCallBack && closeCallBack(res); }) uni.onSocketError((e) => { console.log(e) - isConnect = false; //连接断开修改标识 - uni.showModal({ - content: '连接失败,可能是websocket服务不可用,请稍后再试', - showCancel: false, - }) + isConnect = false; + // APP 应用切出超过一定时间(约1分钟)会触发报错,此处回调给应用进行重连 + closeCallBack && closeCallBack({code: 1006}); }) }; @@ -95,12 +93,12 @@ let reconnect = (wsurl, accessToken) => { }; //设置关闭连接 -let close = () => { +let close = (code) => { if (!isConnect) { return; } uni.closeSocket({ - code: 3000, + code: code, complete: (res) => { console.log("关闭websocket连接"); isConnect = false; diff --git a/im-uniapp/components/file-upload/file-upload.vue b/im-uniapp/components/file-upload/file-upload.vue index a2b54ac..158dff6 100644 --- a/im-uniapp/components/file-upload/file-upload.vue +++ b/im-uniapp/components/file-upload/file-upload.vue @@ -5,6 +5,8 @@