// pages/chat/chat.js const {getUserInfoList,getChattingRecord,getGoodsInfo,setWsConnect} = require('../../API/appraise') import messageMap from '../../utils/util' var socketMsgQueue = { from: wx.getStorageSync('uid'), to: '', msgType: 1, time: '', content: '' } var getUserInfoListOption = { data:{ uid:[] } } var getChattingRecordOption = { uid:wx.getStorageSync('uid'), target:'' } var getGoodsInfoOption = { id:'', uid:'', date:'' } var setWsConnectOption = { uid: wx.getStorageSync('uid') } Page({ /** * 页面的初始数据 */ data: { toUid:'', goodsId:'', goods: { pic:'', name:'', price: 0, }, //登录用户的信息 login: { id: wx.getStorageSync('uid') }, chatList: [ // { // from: '7385700531999608832', // to: '7384540497554968576', // nickname:'daisy', // avatar: 'http://192.168.31.30:8084/pics/1698753512AiD8PaNrvqsDb1493fda534929a5b5d05f80a8cf3d16.jpg', // message: '你好', // type: 'text', // time: '11-8 20:52' // }, // { // to: '7385700531999608832', // from: '7384540497554968576', // nickname:'无情的敲代码机器人', // avatar: 'http://192.168.31.30:8084/pics/1699175056BvtgC8vv8gSzd85dedb14362dc3a251c6c85705ec495.jpg', // message: '你好', // type: 'text', // time: '11-8 20:52' // } ] }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { //获取商品信息 this.data.toUid = options.toUid; this.data.goodsId = options.goodsId; getChattingRecordOption.target = this.data.toUid; let time = new Date().getTime(); getGoodsInfoOption = { id:this.data.goodsId, uid:wx.getStorageSync('uid'), date:time } getGoodsInfo(getGoodsInfoOption).then((res)=>{ console.log(res); const good = res.data.data; this.setData({ goods:{ pic:good.Pic, name: good.Title, price: good.Price } }) }).catch((err)=>{ console.log(err); }) //获取用户信息 getUserInfoListOption.data.uid = [this.data.toUid]; getUserInfoList(getUserInfoListOption).then((res)=> { console.log(res); const {users} = res.data.data; wx.setStorageSync('anotherNickName', users[0].name); wx.setStorageSync('anotherAvatar', users[0].avatar); }).catch((err)=>{ console.log(err); }) //建立ws连接 setWsConnect(setWsConnectOption).then((res)=> { console.log(res); }) // 监听服务器的数据返回 wx.onSocketMessage((result) => { console.log("服务器的数据返回", result); const res = JSON.parse(result.data); if(res.msgType == 1){ //获取当前时间 let date = new Date(); let month = date.getMonth() + 1; let day = date.getDate(); let hour = date.getHours(); let minu = date.getMinutes(); let now1 = month < 10 ? '0' + month : month; let now2 = day < 10 ? '0' + day : day; //处理数据 if(res.from == this.data.toUid){ let msg = { from: res.from, to:res.to, message: res.content, type: 'text', time: now1 + '-' + now2 + ' ' + hour + ':' + minu, nickname: wx.getStorageSync('anotherNiakName'), avatar: wx.getStorageSync('anotherAvatar') } console.log(msg); this.setData({ chatList: list.concat(msg) }, () => { that.scrollToBottom(); that.setData({ content: '' }) }) } } }) this.scrollToBottom(); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { wx.closeSocket(); console.log('websocket 已关闭!'); }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, // 输入监听 inputClick(e) { this.setData({ content: e.detail.value }) }, // 发送监听 sendClick() { let that = this; let list = this.data.chatList; // 获取当前时间 let date = new Date(); let month = date.getMonth() + 1; let day = date.getDate(); let hour = date.getHours(); let minu = date.getMinutes(); let now1 = month < 10 ? '0' + month : month; let now2 = day < 10 ? '0' + day : day; // 组装数据 let msg = { from: wx.getStorageSync('uid'), to: this.data.toUid, nickname: wx.getStorageSync('nickName'), avatar: wx.getStorageSync('avatarUrl'), message: this.data.content, type: 'text', time: now1 + '-' + now2 + ' ' + hour + ':' + minu } console.log(msg); this.setData({ chatList: list.concat(msg) }, () => { that.scrollToBottom(); that.setData({ content: '' }) }) let socketMsg = socketMsgQueue; socketMsg.msgType = 1; socketMsg.content = this.data.content; socketMsg.to = this.data.toUid; console.log(this.data.toUid); let time = new Date().getTime(); console.log(time); socketMsg.time = time; console.log(socketMsg); wx.sendSocketMessage({ data: JSON.stringify(socketMsg), }) }, // 滑动到最底部 scrollToBottom() { setTimeout(() => { wx.pageScrollTo({ scrollTop: 200000, duration: 3 }); }, 600) }, })