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

消息收发流程如下:
- 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
- IM 服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
- 目标用户收到消息。
注意事项
- 用户只有加入聊天室后,才能发送消息。
- 最新版本可支持文本消息、自定义消息、图片消息以及文件消息,暂不支持语音消息、视频消息等其他类型的消息。
给单人发送文本消息
配置步骤
-
调用
getRoomContext接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
sendDirectTextMessage接口,定向给某个人发送文本消息。相关参数说明如下表所示。名称 类型 描述 userUuid String 消息接收方的用户 ID。 message String 文本消息的内容。 chatroomType NEChatroomType 聊天室类型。 senderExtension Map<String, Object> 扩展信息。
示例代码
实现给单人发送消息的示例代码如下:
javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
String targetUserUuid="";
String message="broadcast text message";
roomContext.getChatController().sendDirectTextMessage(targetUserUuid,message, new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
给多人发送文本消息
配置步骤
-
调用
getRoomContext接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
sendGroupTextMessage接口,给多人发送文本消息。相关参数说明如下表所示。名称 类型 描述 userUuids List<String> 消息接收方的用户 ID。 message String 文本消息内容。 chatroomType NEChatroomType 聊天室类型。 senderExtension Map<String, Object> 扩展信息。
示例代码
实现给多人发送消息的示例代码如下:
javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
ArrayList<String> uerUuids=new ArrayList<>();
uerUuids.add("userUuid1");
uerUuids.add("userUuid2");
String message="broadcast text message";
roomContext.getChatController().sendGroupTextMessage(uerUuids,message, new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
发送广播文本消息
配置步骤
-
调用
getRoomContext接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
sendBroadcastTextMessage接口,向全员发送广播文本消息。相关参数说明如下表所示。名称 类型 描述 message String 文本消息内容。 chatroomType NEChatroomType 聊天室类型。 senderExtension Map<String, Object> 扩展信息。
示例代码
实现发送广播消息的示例代码如下:
javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
String message="broadcast text message";
roomContext.getChatController().sendBroadcastTextMessage(message, new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
发送图片消息
配置步骤
-
调用
getRoomContext接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
监听消息附件上传进度。
-
调用
sendImageMessage接口,发送图片消息。相关参数说明如下表所示。名称 类型 描述 messageUuid String 消息标识,可用于监听该消息附件上传的进度,可通过 [UUID.randomUUID()] 生成。 imagePath String 图片路径。 userUuids List<String> 用户 ID 列表。
如果userUuids为空,表示发送全员消息。
如果userUuids不为空,表示给单人或多人发送消息。chatroomType NEChatroomType 聊天室类型。
示例代码
实现发送图片消息的示例代码如下:
javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
String msgUuid = UUID.randomUUID();
roomContext.addRoomListener(new RoomListener() {
@Override
public void onChatroomMessageAttachmentProgress(String messageUuid , long transferred, long total) {
if (msgUuid.equals(messageUuid)) {
//todo:处理消息上传进度
}
}
});
String imagePath = "/sdcard/image.png";
List<String> userUuids = null; // 空表示全员广播消息;如果指定了成员列表,则为定向消息
roomContext.getChatController().sendImageMessage(msgUuid, imagePath, userUuids, new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
发送文件消息
配置步骤
-
调用
getRoomContext接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
监听消息附件上传进度。
-
调用
sendFileMessage接口,发送图片消息。相关参数说明如下表所示。名称 类型 描述 messageUuid String 消息标识,可用于监听该消息附件上传的进度,可通过 [UUID.randomUUID()] 生成。 filePath String 文件路径。 userUuids List<String> 用户 ID 列表。
如果userUuids为空,表示发送全员消息。
如果userUuids不为空,表示给单人或多人发送消息。chatroomType NEChatroomType 聊天室类型。
示例代码
实现发送文件消息的示例代码如下:
javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
String msgUuid = UUID.randomUUID();
roomContext.addRoomListener(new RoomListener() {
@Override
public void onChatroomMessageAttachmentProgress(String messageUuid , long transferred, long total) {
if (msgUuid.equals(messageUuid)) {
//todo:处理消息上传进度
}
}
});
String filePath = "/sdcard/word.docx";
List<String> userUuids = null; // 空表示全员广播消息;如果指定了成员列表,则为定向消息
roomContext.getChatController().sendFileMessage(msgUuid, filePath, userUuids, new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
发送广播自定义消息
配置步骤
-
调用
getRoomContext接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
sendBroadcastCustomMessage接口,向全员发送广播自定义消息。相关参数说明如下表所示。名称 类型 描述 message String 自定义消息内容。 chatroomType NEChatroomType 聊天室类型。
示例代码
实现发送广播自定义消息的示例代码如下:
javaNERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
String message="broadcast custom message";
roomContext.getChatController().sendBroadcastCustomMessage(message, new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
API 参考
| 方法 | 功能描述 |
|---|---|
| sendBroadcastTextMessage | 发送广播文本消息。 |
| sendDirectTextMessage | 发送定向文本消息。 |
| sendGroupTextMessage | 给多人发送文本消息。 |
| sendImageMessage | 发送图片消息。 |
| sendFileMessage | 发送文件消息。 |
| sendBroadcastCustomMessage | 发送广播自定义消息。 |





