diff --git a/apis/index.js b/apis/index.js index 917ef93..bc86f66 100644 --- a/apis/index.js +++ b/apis/index.js @@ -10,8 +10,8 @@ import router from '../router' // 基础配置 const config = { - apiUrl : 'https://douhuo.douhuofalv.com/api/', - // apiUrl : 'https://api.douhuotest.douhuofalv.com/api/', //测试环境 + // apiUrl : 'https://douhuo.douhuofalv.com/api/', + apiUrl : 'https://api.douhuotest.douhuofalv.com/api/', //测试环境 timeout : 60000 } diff --git a/apis/interfaces/yxim.js b/apis/interfaces/yxim.js new file mode 100644 index 0000000..6807e61 --- /dev/null +++ b/apis/interfaces/yxim.js @@ -0,0 +1,20 @@ + +/** + * Web唐明明 + * 匆匆数载恍如梦,岁月迢迢华发增。 + * 碌碌无为枉半生,一朝惊醒万事空。 + * moduleName: 网易云信IM + */ + +import { request } from '../index' + +// 获取im登录 +const imToken = data => { + return request({ + url : 'im/token' + }) +} + +export { + imToken +} diff --git a/im/INIT.js b/im/INIT.js new file mode 100644 index 0000000..30373af --- /dev/null +++ b/im/INIT.js @@ -0,0 +1,58 @@ + +import Vue from 'vue' +import store from '@/store'; +import NIMSDK from 'nim-web-sdk-ng/dist/NIM_UNIAPP_SDK' +import { imToken } from '@/apis/interfaces/yxim.js' + +export const INIT = async () => { + + let APPKEY = '' + let TOKEN = '' + let UID = '' + + if( store.getters.getToken == '' || uni.getStorageSync('token') == '' ){ + return '用户未登录' + } + + await imToken().then(res => { + let { app_key, token, uid } = res; + APPKEY = app_key + TOKEN = token + UID = uid + }).catch(err => { + uni.showToast({ + title: 'IM INIT ERR' + err.code, + icon : 'none' + }) + }) + + const yxim = new NIMSDK({ + appkey : APPKEY, + account : UID, + token : TOKEN, + debugLevel : 'debug', + needReconnect : true, + reconnectionAttempts: 5 + }) + + // 注册监听事件 + const eventList = [ + 'logined', + 'kicked', + 'willReconnect', + 'disconnect', + 'msg', + 'syncdone', + ] + + eventList.forEach(key => { + yxim.on(key, res => { + console.log(`{$key}:`, res ? JSON.parse(JSON.stringify(res)): res) + }) + }) + + await yxim.connect(); + + // 挂载全局变量方法 + Vue.prototype.$nim = yxim; +} diff --git a/main.js b/main.js index 6d5f2d2..821bf6c 100644 --- a/main.js +++ b/main.js @@ -7,16 +7,20 @@ import store from './store' import { router, RouterMount } from 'router' import Mylink from './node_modules/uni-simple-router/dist/link.vue' -Vue.component('my-link', Mylink) +import { INIT } from './im/INIT' -Vue.use(uView) -Vue.use(router) - -Vue.config.productionTip = false -App.mpType = 'app' -const app = new Vue({ - store, - ...App -}) - -app.$mount() +(async () => { + Vue.component('my-link', Mylink) + Vue.use(uView) + Vue.use(router) + + await INIT(); + + Vue.config.productionTip = false + App.mpType = 'app' + const app = new Vue({ + store, + ...App + }) + app.$mount() +})() diff --git a/package-lock.json b/package-lock.json index 9dc54dc..84c6e27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "moment": "^2.29.4", + "nim-web-sdk-ng": "^0.12.3", "uni-read-pages": "^1.0.5", "uni-simple-router": "^2.0.7", "uview-ui": "^2.0.31", @@ -164,6 +165,16 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "peer": true }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -192,11 +203,26 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/nim-web-sdk-ng": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/nim-web-sdk-ng/-/nim-web-sdk-ng-0.12.3.tgz", + "integrity": "sha512-S1RYQDz5n/tCqdHVv5fIBKBB60hdvySLTLo1xSgPVrk725GrGSXXyblWZeaWazUoFuLzfSKyrK0LRCJoAMcHYw==", + "dependencies": { + "eventemitter3": "^4.0.7", + "lodash-es": "^4.17.21", + "platform": "^1.3.6" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, "node_modules/postcss": { "version": "8.4.20", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", @@ -457,6 +483,16 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "peer": true }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -476,11 +512,26 @@ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" }, + "nim-web-sdk-ng": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/nim-web-sdk-ng/-/nim-web-sdk-ng-0.12.3.tgz", + "integrity": "sha512-S1RYQDz5n/tCqdHVv5fIBKBB60hdvySLTLo1xSgPVrk725GrGSXXyblWZeaWazUoFuLzfSKyrK0LRCJoAMcHYw==", + "requires": { + "eventemitter3": "^4.0.7", + "lodash-es": "^4.17.21", + "platform": "^1.3.6" + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, + "platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, "postcss": { "version": "8.4.20", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", diff --git a/package.json b/package.json index 30c9a9a..63dcf7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "dependencies": { "moment": "^2.29.4", + "nim-web-sdk-ng": "^0.12.3", "uni-read-pages": "^1.0.5", "uni-simple-router": "^2.0.7", "uview-ui": "^2.0.31", diff --git a/pages.json b/pages.json index 4df438c..0c59f36 100644 --- a/pages.json +++ b/pages.json @@ -599,6 +599,11 @@ "selectedIconPath": "static/icons/tabs_show_02.png", "pagePath": "pages/work/index", "text": "工作台" + },{ + "iconPath": "static/icons/tabs_icon_04.png", + "selectedIconPath": "static/icons/tabs_icon_04.png", + "pagePath": "pages/im/msg", + "text": "消息" }, { "iconPath": "static/icons/tabs_icon_03.png", "selectedIconPath": "static/icons/tabs_show_03.png", diff --git a/pages/im/chat.vue b/pages/im/chat.vue index 5388f64..714fafd 100644 --- a/pages/im/chat.vue +++ b/pages/im/chat.vue @@ -3,23 +3,6 @@ 消息{{index}} - diff --git a/pages/im/msg.vue b/pages/im/msg.vue index 3361986..0bdaa5d 100644 --- a/pages/im/msg.vue +++ b/pages/im/msg.vue @@ -58,6 +58,11 @@ } } }, + onShow() { + console.log() + + // this.$nim.msg() + }, methods: { onMsg(id){ let cartId = id || null diff --git a/yarn.lock b/yarn.lock index acaff64..5feaa1c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -131,6 +131,16 @@ "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" "version" "2.0.2" +"eventemitter3@^4.0.7": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"lodash-es@^4.17.21": + "integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + "version" "4.17.21" + "magic-string@^0.25.7": "integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" @@ -148,11 +158,25 @@ "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" "version" "3.3.4" +"nim-web-sdk-ng@^0.12.3": + "integrity" "sha512-S1RYQDz5n/tCqdHVv5fIBKBB60hdvySLTLo1xSgPVrk725GrGSXXyblWZeaWazUoFuLzfSKyrK0LRCJoAMcHYw==" + "resolved" "https://registry.npmjs.org/nim-web-sdk-ng/-/nim-web-sdk-ng-0.12.3.tgz" + "version" "0.12.3" + dependencies: + "eventemitter3" "^4.0.7" + "lodash-es" "^4.17.21" + "platform" "^1.3.6" + "picocolors@^1.0.0": "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" "version" "1.0.0" +"platform@^1.3.6": + "integrity" "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + "resolved" "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" + "version" "1.3.6" + "postcss@^8.1.10", "postcss@^8.4.14": "integrity" "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==" "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz"