聊天室消息接收
更新时间: 2025/05/27 17:30:56
本文主要介绍如何通过 NERoom SDK 在房间内实现聊天室消息的接收。
功能介绍
消息表示发送方给接收方发送的内容。
消息类型
| 类型 | 描述 |
|---|---|
| 文本消息 | 文本消息的内容是文本,可以包含超链接、emoji 表情符号等。表情消息可基于文本消息实现。文本消息大小限制为 5 KB。 |
| 多媒体消息 | 多媒体消息包括文件消息和图片消息。 |
| 自定义消息 | 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息。 |
功能原理

消息收发流程如下:
- 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
- IM 服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
- 目标用户收到消息。
注意事项
- 用户只有加入聊天室后,才能发送消息。
- 最新版本可支持文本消息、自定义消息、图片消息以及文件消息,暂不支持语音消息、视频消息等其他类型的消息。
接收文本消息
配置步骤
- 调用如下接口添加消息接收的监听。
javafun addRoomListener(listener: NERoomListener)
- 调用如下接口实现消息接收。
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());
}
}
}
});
}
接收图片、文件消息
配置步骤
- 调用如下接口添加消息接收的监听以及消息附件下载进度监听。
javafun addRoomListener(listener: NERoomListener)
- 在消息回调中对接收到的消息过滤出图片、文件消息。
javafun onReceiveChatroomMessages(messages: List<NERoomChatMessage>)
| 名称 | 类型 | 描述 |
|---|---|---|
| messages | List<NERoomChatMessage> | 聊天室消息列表。 |
- 调用如下接口进行消息附件的下载。
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 | 取消下载消息附件。 |
此文档是否对你有帮助?





