实现聊天室消息(基于NERoom)

更新时间: 2023/08/30 02:51:14

语聊房中的聊天消息功能可以让用户在语聊房中自由交流,促进用户之间的沟通交流,提高用户参与度。本文介绍如何通过 NERoom 房间组件实现语聊房的聊天消息,包括文本消息、自定义消息。

功能介绍

聊天消息功能可以让用户在语聊房中建立更加紧密的社交关系,提高用户对语聊房的依赖和粘性,从而增加用户的使用时长和活跃度。

语聊房中的消息类型主要是文本消息,包括:文本、超链接、emoji 表情符号等。

功能原理

消息收发.png

消息收发流程如下

  1. 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
  2. IM服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
  3. 目标用户收到消息。

API 调用时序图

sequenceDiagram
    autonumber
    participant 应用层
    participant NERoom 房间组件

    应用层->>NERoom 房间组件: addRoomListener 添加监听
    应用层->>NERoom 房间组件: joinChatroom 进入聊天室
    NERoom 房间组件-->>应用层: onMemberJoinChatroom 
    

    rect rgb(191, 223, 255)
    应用层 ->> NERoom 房间组件: sendDirectTextMessage 定向给某个人发送文本消息
    应用层 ->> NERoom 房间组件:sendGroupTextMessage 给多人发送文本消息
    NERoom 房间组件-->>应用层: onReceiveChatroomMessages
    end

实现方法

  1. 调用 addRoomListener 接口添加相关监听,聊天消息相关的事件主要如下:
    NERoomContext roomContext = NERoomKit.getInstance().getRoomService().getRoomContext(roomUuid);
    if (roomContext!=null){
        roomContext.addRoomListener(new NERoomListener() {

            @Override
            public void onMemberJoinChatroom(@NonNull @JvmSuppressWildcards List<NEVoiceRoomMember> members) {
    
            }

            @Override
            public void onMemberLeaveChatroom(@NonNull @JvmSuppressWildcards List<NEVoiceRoomMember> members) {
                
            }
            @Override
            public void onReceiveChatroomMessages(@NonNull List<? extends NERoomChatMessage> list) {

            }
        });
    }
  1. 调用 joinChatroom 接口进入聊天室。
  NERoomContext roomContext = NERoomKit.getInstance().getRoomService().getRoomContext(roomUuid);
    if (roomContext!=null){
        roomContext.getChatController().joinChatroom(new NECallback2<Unit>() {
            @Override
            public void onError(int code, @Nullable String message) {
                super.onError(code, message);
            }

            @Override
            public void onSuccess(@Nullable Unit data) {
                super.onSuccess(data);
            }
        });
    }
  1. 成员进入聊天室成功后,会触发 NERoomListener 协议中的 onMemberJoinChatroom 回调方法,通知房间内所有成员。
  2. 调用 sendDirectTextMessage 接口,定向给某个人发送文本消息。
    NERoomContext roomContext = NERoomKit.getInstance().getRoomService().getRoomContext(roomUuid);
    if (roomContext!=null){
        roomContext.getChatController().sendDirectTextMessage(userUuid, "your message", new NECallback2<Unit>() {
            @Override
            public void onError(int code, @Nullable String message) {
                super.onError(code, message);
            }

            @Override
            public void onSuccess(@Nullable Unit data) {
                super.onSuccess(data);
            }
        });
  }
  1. 调用 sendGroupTextMessage 接口,给多人发送文本消息。
    NERoomContext roomContext = NERoomKit.getInstance().getRoomService().getRoomContext(roomUuid);
      if (roomContext != null) {
          ArrayList<String> targets = new ArrayList<>();
          roomContext.getChatController().sendGroupTextMessage(targets, "your message", new NECallback2<Unit>() {
              @Override
              public void onError(int code, @Nullable String message) {
                  super.onError(code, message);
              }

              @Override
              public void onSuccess(@Nullable Unit data) {
                  super.onSuccess(data);
              }
          });
      }
  1. 接收方收到文本消息时,会触发 onReceiveChatroomMessages 回调。
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • API 调用时序图
  • 实现方法