写点什么

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

发布于: 2021 年 03 月 16 日

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


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


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


抽离出的功能:


  1. 首先我需要一个聊天室

  2. 其次我需要发送消息,嗯消息分的很明确,当时看到的文本和表情都有。

  3. 我的礼物怎么办?

  4. 我的点赞怎么办?

  5. 人员加入退出我要如何显示?


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


参考文档: https://docs.rongcloud.cn/v2/views/im/noui/guide/chatroom/setting/include/web.html


参考 Demo:https://github.com/rongcloud/websdk-demo/tree/master/chatroom-h5


效果图可查看融云 demo 的线上体验地址:https://rongcloud.github.io/websdk-demo/chatroom-h5/demo.html?id=11


这样我的大部分需求都实现了,加入,发消息,点赞等。看 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 就更好了。体感不错后续继续优化~~~


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


用户头像

还未添加个人签名 2021.01.26 加入

还未添加个人简介

评论

发布
暂无评论
使用融云 IM SDK 实现 H5 直播聊天