//app.js require('./utils/strophe.js') var WebIM = require('./utils/WebIM.js').default App({ getRoomPage: function () { return this.getPage("pages/chatroom/chatroom") }, getPage: function (pageName) { var pages = getCurrentPages() console.log("pages:" + pages) return pages.find(function (page) { console.log("getPage:" + page.__route__) return page.__route__ == pageName }) }, onLaunch: function (option) { var that = this //调用API从本地缓存中获取数据 var userToken = wx.getStorageSync('userToken') var userId = wx.getStorageSync('userId') var tourist = wx.getStorageSync('tourist') if (tourist || tourist == true ){ this.globalData.tourist = true } this.globalData.token = userToken this.globalData.userId = userId this.globalData.currentId = userId[0] console.log(userToken) // wx.navigateTo({ // url: 'pages/BloodSugerHome/BloodSugerHome' // }) if (option.query) { if (option.query.mpid) { this.globalData.openInfo.mpid = option.query.mpid wx.setStorageSync('mpid', option.query.mpid) } } var mpid = wx.getStorageSync('mpid') if(mpid){ this.globalData.openInfo.mpid = mpid } wx.login({ success: function (res) { // success that.globalData.openInfo.code = res.code }, fail: function (res) { // fail }, complete: function (res) { // complete } }) WebIM.conn.listen({ onOpened: function (message) { console.log("onOpened") wx.setStorageSync('isHxOpend', true) // WebIM.conn.setPresence() // WebIM.conn.getRoster(rosters) }, onPresence: function (message) { console.log('onPresence', message) var pages = getCurrentPages() if (message.type == "unsubscribe") { pages[0].moveFriend(message) } if (message.type === "subscribe") { //console.log('MMMMMMMMMMMMMM',message.status) if (message.status === '[resp:true]') { return } else { pages[0].handleFriendMsg(message) } } }, onRoster: function (message) { console.log('onRoster', message) var pages = getCurrentPages() if (pages[0]) { pages[0].onShow() } }, onAudioMessage: function (message) { console.log('onAudioMessage', message) var page = that.getRoomPage() console.log(page) if (message) { if (page && page.data != null && page.data.yourname && message.from == page.data.yourname) { page.receiveMsg(message, 'audio') } else { var chatMsg = that.globalData.chatMsg || [] // if (message.type == 'txt') { // var value = WebIM.parseEmoji(message.data.replace(/\n/mg, '')) // } else if (type == 'emoji') { // var value = msg.data // } var time = WebIM.time() var msgData = { info: { from: message.from, to: message.to }, username: message.from, yourname: message.from, msg: { type: 'audio', // data: value, url: message.url }, style: '', time: time, mid: 'audio' + message.id } chatMsg = wx.getStorageSync(msgData.yourname + message.to) || [] chatMsg.push(msgData) wx.setStorage({ key: msgData.yourname + message.to, data: chatMsg, success: function () { //console.log('success') } }) } } }, onTextMessage: function (message) { console.log('onTextMessage', message) var page = that.getRoomPage() // console.log("yourname:", page.data.yourname) if (message) { if (page && page.data != null && page.data.yourname && message.from == page.data.yourname) { page.receiveMsg(message, 'txt') } else { var chatMsg = that.globalData.chatMsg || [] var value = WebIM.parseEmoji(message.data.replace(/\n/mg, '')) var time = WebIM.time() var msgData = { info: { from: message.from, to: message.to }, username: message.from, yourname: message.from, msg: { type: 'txt', data: value }, style: '', time: time, mid: 'txt' + message.id } chatMsg = wx.getStorageSync(msgData.yourname + message.to) || [] chatMsg.push(msgData) wx.setStorage({ key: msgData.yourname + message.to, data: chatMsg, success: function () { console.log('setStorage success') } }) } } }, onEmojiMessage: function (message) { console.log('onEmojiMessage', message) var page = that.getRoomPage() //console.log(pages) if (message) { if (page && page.data != null && page.data.yourname && message.from == page.data.yourname) { page.receiveMsg(message, 'emoji') } else { var chatMsg = that.globalData.chatMsg || [] var time = WebIM.time() var msgData = { info: { from: message.from, to: message.to }, username: message.from, yourname: message.from, msg: { type: 'emoji', data: message.data }, style: '', time: time, mid: 'emoji' + message.id } msgData.style = '' chatMsg = wx.getStorageSync(msgData.yourname + message.to) || [] chatMsg.push(msgData) //console.log(chatMsg) wx.setStorage({ key: msgData.yourname + message.to, data: chatMsg, success: function () { //console.log('success') } }) } } }, onPictureMessage: function (message) { console.log('Picture', message); var page = that.getRoomPage() if (message) { if (page && page.data != null && page.data.yourname && message.from == page.data.yourname) { //console.log("wdawdawdawdqwd") page.receiveImage(message, 'img') } else { var chatMsg = that.globalData.chatMsg || [] var time = WebIM.time() var msgData = { info: { from: message.from, to: message.to }, username: message.from, yourname: message.from, msg: { type: 'img', data: message.url }, style: '', time: time, mid: 'img' + message.id } msgData.style = '' chatMsg = wx.getStorageSync(msgData.yourname + message.to) || [] chatMsg.push(msgData) wx.setStorage({ key: msgData.yourname + message.to, data: chatMsg, success: function () { //console.log('success') } }) } } }, onClosed: function (message) { console.log("onClosed:", message) wx.setStorageSync('isHxOpend', false) }, // 各种异常 onError: function (error) { console.log("error:", error) // 16: server-side close the websocket connection if (error.type == WebIM.statusCode.WEBIM_CONNCTION_DISCONNECTED) { console.log('WEBIM_CONNCTION_DISCONNECTED 123', WebIM.conn.autoReconnectNumTotal, WebIM.conn.autoReconnectNumMax); if (WebIM.conn.autoReconnectNumTotal < WebIM.conn.autoReconnectNumMax) { return; } // wx.('Error', 'server-side close the websocket connection') // NavigationActions.login()/ wx.showToast({ title: 'server-side close the websocket connection', duration: 1000 }); // wx.redirectTo({ // url: '../login/login' // }); return; } // 8: offline by multi login if (error.type == WebIM.statusCode.WEBIM_CONNCTION_SERVER_ERROR) { console.log('WEBIM_CONNCTION_SERVER_ERROR'); // Alert.alert('Error', 'offline by multi login') // NavigationActions.login() wx.showModal({ title: '提示', content: '你的帐号在其他设备上登录,如需使用聊天,请重新进入首页', showCancel: false, success: function (res) { } }) // wx.showToast({ // title: 'offline by multi login', // duration: 1000 // }) // wx.redirectTo({ // url: '../login/login' // }) return; } }, onOffline: function () { console.log("onOffline:") }, onOnline: function () { console.log("onOnline:") } }) }, getUserInfo: function (cb) { var that = this if (this.globalData.userInfo) { typeof cb == "function" && cb(this.globalData.userInfo) } else { //调用登录接口 wx.login({ success: function () { wx.getUserInfo({ success: function (res) { that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) } }) } }) } }, globalData: { userInfo: null, token: '', userId:'', openInfo: {}, artList:[], days:0, currentId:'', tourist:false }, })