最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 使用融云 IM SDK 实现 H5 直播聊天

    正文概述 掘金(wffff)   2020-12-24   541

    使用融云 IM SDK 实现 H5 直播聊天

    当我拿到这个需求,脑子里出现了淘宝各大直播场景,尤为印象深刻的李佳琪的 ‘我的妈呀!’,’买它买它买它!‘,‘Oh my god!’。然后默默点开了直播。好吧,有点跑题,其实我就是想去了解下,之前都是作为看直播的人在看直播,当自己接到了这样的需求当然还要再进去看看,果然心情不一样了。

    。。。。此处不赘述心路历程了。。。。第一波体验完成。静静等待公司的详细需求。

    需求评估时公司提出来需要用融云的 SDK,让我们先了解下聊天室场景的相关内容。带着我之前的体验,去看文档目的还是挺明确的。融云的文档会有场景介绍,这点还是不错的,配上需求和之前体验的心得,很容易找到了我想要的东西。

    抽离出的功能:

    1. 首先我需要一个聊天室
    2. 其次我需要发送消息,嗯消息分的很明确,当时看到的文本和表情都有。
    3. 我的礼物怎么办?
    4. 我的点赞怎么办?
    5. 人员加入退出我要如何显示?

    虽然带有问题,但是个人觉得还是先上手体验下会又不一样的感受。查看到有 Demo 正好可以参考借鉴下。

    参考文档: docs.rongcloud.cn/v2/views/im…

    参考 Demo:github.com/rongcloud/w…

    效果图可查看融云 demo 的线上体验地址:rongcloud.github.io/websdk-demo…

    这样我的大部分需求都实现了,加入,发消息,点赞等。看 Demo 后发现我的担心解决了很多,比如说人员加入和点赞,看 Demo 中直接使用了自定义消息,这点还是很不错的。点个赞~

    上一部分核心代码

    初始化连接

    RongIMLib.RongIMClient.init(appKey);
    registerMessageType();
    
    RongIMClient.connect(token, {
      onSuccess: function (userId) {
        RongIM.ready = true;
        RongIM.userInfo = {
          data: { userId: userId },
          status: "ok",
          info: "链接成功"
        };
        callbacks.onConnected && callbacks.onConnected(RongIM.instance, RongIM.userInfo);
      },
      onError: function (errorCode) {
        RongIM.ready = false;
        RongIM.userInfo = {
          data: {},
          status: "fail",
          info: errorCode
        };
    
        for (var i = 0, len = onConnectList.length; i < len; i++) {
          onConnectList[i](RongIM.instance, RongIM.userInfo);
        }
      }
    }); 
    
    function registerMessageType() {
      var messageName = 'PersonMessage';
      var objectName = 's:person';
      var isCounted = true;
      var isPersited = true;
      var mesasgeTag = new RongIMLib.MessageTag(isCounted, isPersited);
      var prototypes = ['name', 'portrait', 'id'];
      RongIMClient.registerMessageType(messageName, objectName, mesasgeTag, prototypes);
    
      var messageName = 'LikerMessage';
      var objectName = 's:liker';
      var isCounted = false;
      var isPersited = false;
      var mesasgeTag = new RongIMLib.MessageTag(isCounted, isPersited);
      var prototypes = ['likerNum'];
      RongIMClient.registerMessageType(messageName, objectName, mesasgeTag, prototypes);
    
    }
    

    聊天室加入

    IM.joinChatRoom(chatRoomId, count, {
      onSuccess: function () {
        var chatRoom = {
          id: chatRoomId,
          currentUser: userInfo.data,
          getInfo: function (params, callbacks) {
            var order = params.order;
            var memberCount = params.memberCount;
            IM.getChatRoomInfo(chatRoomId, memberCount, order, callbacks);
          },
          quit: function (callbacks) {
            IM.quitChatRoom(chatRoomId, callbacks);
          },
          sendMessage: function (msg, callbacks) {
            var conversationType = RongIMLib.ConversationType.CHATROOM;
            IM.sendMessage(conversationType, chatRoomId, msg, callbacks);
          }
        };
        callbacks.onSuccess && callbacks.onSuccess(chatRoom);
      },
      onError: function (error) {
        callbacks.onError && callbacks.onError(error);
      }
    });
    

    聊天室发消息

    let messageValue = textMessageInfo = {
      content: content,
      user: getUserInfo(RongIMLib.chatRoom.currentUser.userId)
    }
    var msg = new RongIMLib.TextMessage(messageValue);
    RongIMLib.chatRoom.sendMessage(msg, {
      onSuccess: function (message) {
        updateMessage(message);
      },
      onError: function (errorCode, message) {
        console.log("发送聊天室消息失败", errorCode);
      }
    });
    

    代码中仅有关键操作的部分代码,详细情况可参考 Demo 中的实现,此处仅提供部分代码不可直接跑通哦!!!

    整体 demo 体验还是不错的,不过 Demo 没有任何框架,参考流程够用了,但是要嵌入到自己的项目中还是需要做一翻改动的。小建议,要是融云可以出几款开包即用的 Demo 就更好了。体感不错后续继续优化~~~

    如有类似需求的大家可以参考哦。


    起源地下载网 » 使用融云 IM SDK 实现 H5 直播聊天

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元