小程序实现环信群聊

最近在研究小程序群聊,发现环信官方未发布小程序群聊,并且近期也没有发布的打算。so 自行根据单聊实现群聊。

话不多说,直接上图
这里写图片描述

新增了msg.body.group = 'groupchat';

ok,发送搞定了,那么接收消息呢?、

onTextMessage: function (message) {
     console.log('收到txt消息');
     console.log(message);
     if (message) {
         if(message.type == 'chat'){
             //此处为单聊,暂不举例
         }else{
             var page = that.getGroupPage();
             if (page) {
                 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,
                     userNickname : message.ext.userName,
                     userAvatar : message.ext.userPic,
                 }
                 chatMsg = wx.getStorageSync('group_' + message.to) || []
                 chatMsg.push(msgData)
                 wx.setStorageSync('group_' + message.to, chatMsg);
             }
         }
     }
 },

就是简单的判断了一下接受到的消息的类型,然后缓存的key换了一下。

还有一点就是聊天时的用户名和头像了。
两种方法:

  • 接口获取,每次收到新消息时调用服务器接口获取(实时性强,不推荐)
  • 扩展消息,通过消息主体外的扩展消息带过来头像和昵称

那么小程序的扩展消息如何设置呢
msg.body.ext.userNickname = wx.getStorageSync('myNickname');
msg.body.ext.userAvatar = wx.getStorageSync('myAvatar');

此处需注意一点,如果APP中同样使用了扩展消息,那么扩展消息的名字一定要统一哦。。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值