聊天室消息接收

更新时间: 2025/05/27 17:30:56

本文主要介绍如何通过 NERoom SDK 在房间内实现聊天室消息的接收。

功能介绍

消息表示发送方给接收方发送的内容。

消息类型

类型 描述
文本消息 文本消息的内容是文本,可以包含超链接、emoji 表情符号等。表情消息可基于文本消息实现。文本消息大小限制为 5 KB。
多媒体消息 多媒体消息包括文件消息和图片消息。
自定义消息 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息。

功能原理

消息收发.png

消息收发流程如下

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

注意事项

  • 用户只有加入聊天室后,才能发送消息。
  • 最新版本可支持文本消息、自定义消息、图片消息以及文件消息,暂不支持语音消息、视频消息等其他类型的消息。

接收文本消息

配置步骤

  1. 调用如下接口添加消息接收的监听。
javafun addRoomListener(listener: NERoomListener)
  1. 调用如下接口实现消息接收。
javafun onReceiveChatroomMessages(messages: List<NERoomChatMessage>)
名称 类型 描述
messages List<NERoomChatMessage> 聊天室消息列表。

示例代码

实现消息接收的示例代码如下:

javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
    NERoomContext roomContext = roomService.getRoomContext(roomUuid);
    if (roomContext != null) {
          roomContext.addRoomListener(new NERoomListener() {
              @Override
              public void onReceiveChatroomMessages(@NonNull List<? extends NERoomChatMessage> messages) {
                  for (NERoomChatMessage message : messages) {
                      if (message instanceof NERoomChatTextMessagee){
                          Log.d(TAG,"text:"+((NERoomChatTextMessage) message).getText());
                      }
                  }
              }
          });
    }

接收图片、文件消息

配置步骤

  1. 调用如下接口添加消息接收的监听以及消息附件下载进度监听。
javafun addRoomListener(listener: NERoomListener)
  1. 在消息回调中对接收到的消息过滤出图片、文件消息。
javafun onReceiveChatroomMessages(messages: List<NERoomChatMessage>)
名称 类型 描述
messages List<NERoomChatMessage> 聊天室消息列表。
  1. 调用如下接口进行消息附件的下载。
javafun downloadAttachment(messageUuid: String, callback: NECallback<Unit>?)

如需取消下载,可调用如下接口:

javafun cancelDownloadAttachment(messageUuid: String, callback: NECallback<Unit>?)

示例代码

实现消息接收的示例代码如下:

javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext != null) {
      roomContext.addRoomListener(new NERoomListener() {
          @Override
          public void onReceiveChatroomMessages(@NonNull List<? extends NERoomChatMessage> messages) {
              for (NERoomChatMessage message : messages) {
                  if (message instanceof NERoomChatImageMessage || message instanceof NERoomChatFileMessage){
                      roomContext.getChatController().downloadAttachment(message.messageUuid, callback)
                  }
              }
          }

          @Override
          public void onChatroomMessageAttachmentProgress(String messageUuid , long transferred, long total) {
              //todo:处理文件、图片消息下载进度
          }
      });
}

相关 API 文档

方法 功能描述
onReceiveChatroomMessages 接收聊天室消息。
addRoomListener 添加房间事件监听。
downloadAttachment 下载消息附件。
cancelDownloadAttachment 取消下载消息附件。
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 消息类型
  • 功能原理
  • 注意事项
  • 接收文本消息
  • 配置步骤
  • 示例代码
  • 接收图片、文件消息
  • 配置步骤
  • 示例代码
  • 相关 API 文档