import {dealChatTime} from "../../utils/time"; const webSocket = require('../../utils/websocket.js'); /** * 这个类是IM模拟类,作为示例仅供参考。 */ export default class IMOperator { static VoiceType = 'voice'; //语音 static TextType = 'text'; //文本 static ImageType = 'image'; //图片 static CustomType = 'custom'; constructor(page, opts) { this._opts = opts; this._latestTImestamp = 0;//最新消息的时间戳 this._myHeadUrl = this._opts.myheadurl; //我的头像 this._otherHeadUrl = this._opts.headUrl; //好友的头像 } getFriendId() { return this._opts.to_id; } onSimulateReceiveMsg(cbOk) { } onSimulateSendMsg({content, success, fail}) { console.log(content,'里面'); let _that = this; let type; if (content.type){ switch (content.type) { case 'text': type = 'alone' break; case 'image': console.log(1111); type = 'images'; break; } } getApp().Imsocket().sendSocketMessage({ msg: JSON.stringify({ to_id: content.friendId, form_id: content.userId, type: type, content: content.content}), success: function (res) { console.log(res, '单独发送消息成功'); const item = _that.createNormalChatItem(content); _that._latestTImestamp = item.timestamp; success && success(item); }, fail: function (res) { console.log('单独发送消息失败') } }) //这里content即为要发送的数据 //这里的content是一个对象了,不再是一个JSON格式的字符串。这样可以在发送消息的底层统一处理。 // getApp().getIMHandler().sendMsg({ // content, // success: (content) => { // //这个content格式一样,也是一个对象 // const item = this.createNormalChatItem(content); // this._latestTImestamp = item.timestamp; // success && success(item); // }, // fail // }); } //创建要发送的消息 createChatItemContent({type = IMOperator.TextType, content = '', duration} = {}) { if (!content.replace(/^\s*|\s*$/g, '')) return; return { content, type, conversationId: 0,//会话id,目前未用到 userId: getApp().UserId(), friendId: this.getFriendId(),//好友id duration }; } //我对别人说的 createNormalChatItem({type = IMOperator.TextType, content = '', isMy = true, duration} = {}) { if (!content) return; const currentTimestamp = Date.now(); const time = dealChatTime(currentTimestamp, this._latestTImestamp); let obj = { msgId: 0,//消息id friendId: this.getFriendId(),//好友id isMy: isMy,//我发送的消息? showTime: time.ifShowTime,//是否显示该次发送时间 time: time.timeStr,//发送时间 如 09:15, timestamp: currentTimestamp,//该条数据的时间戳,一般用于排序 type: type,//内容的类型,目前有这几种类型: text/voice/image/custom | 文本/语音/图片/自定义 content: content,// 显示的内容,根据不同的类型,在这里填充不同的信息。 headUrl: isMy ? this._myHeadUrl : this._otherHeadUrl,//显示的头像,自己或好友的。 sendStatus: 'success',//发送状态,目前有这几种状态:sending/success/failed | 发送中/发送成功/发送失败 voiceDuration: duration,//语音时长 单位秒 isPlaying: false,//语音是否正在播放 }; obj.saveKey = obj.friendId + '_' + obj.msgId;//saveKey是存储文件时的key return obj; } static createCustomChatItem() { return { timestamp: Date.now(), type: IMOperator.CustomType, content: '会话已关闭' } } }