发送消息
更新时间: 2022/10/31 07:43:09
本文主要介绍如何通过 NERoom SDK 在房间内实现聊天室消息的发送。
功能介绍
消息类型
类型 |
描述 |
---|---|
文本消息 | 文本消息的内容是文本,可以包含超链接、emoji 表情符号等。表情消息是基于文本消息实现的。 文本消息大小限制为 5 KB。 |
多媒体消息 | 多媒体消息包括文件消息和图片消息。 |
自定义消息 | 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息。目前仅支持 RESTful API 发送自定义消息。 |
功能原理
消息收发流程如下:
- 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
- IM服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
- 目标用户收到消息。
注意事项
- 用户只有加入聊天室后,才能发送消息。
- 最新版本可支持文本消息、自定义消息、图片消息以及文件消息,暂不支持语音消息、视频消息等其他类型的消息。
给单人发送消息
配置步骤
-
调用
getRoomContext
接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
sendDirectTextMessage
接口,定向给某个人发送文本消息。参数说明如下表所示。
NEsendBroadcastTextMessageParams
相关参数说明如下表所示。
名称 | 类型 | 描述 |
---|---|---|
userUuid | string | 消息接收方的用户 ID |
message | string | 文本消息的内容 |
示例代码
实现给单人发送消息的示例代码如下:
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
std::string message = "testmessage";
std::string userUuid = "123456";
context->getChatController()->sendDirectTextMessage(userUuid, message, [this](int code, const std::string& msg){
});
}
给多人发送消息
配置步骤
-
调用
getRoomContext
接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
sendGroupTextMessage
接口,给多人发送文本消息。NEsendBroadcastTextMessageParams
相关参数说明如下表所示。名称 类型 描述 userUuids string[] 消息接收方的用户 ID。示例:['userid01', 'userid02'] message string 文本消息内容
示例代码
实现给多人发送消息的示例代码如下:
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
std::string message = "testmessage";
std::list<std::string> userUuids;
context->getChatController()->sendGroupTextMessage(userUuids, message, [this](int code, const std::string& msg){
});
}
发送广播消息
配置步骤
-
调用
getRoomContext
接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
sendBroadcastTextMessage
接口,向全员发送广播消息。NEsendBroadcastTextMessageParams
相关参数说明如下表所示。名称 描述 message 文本消息内容
示例代码
实现发送广播消息的示例代码如下:
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
std::string message = "testmessage";
context->getChatController()->sendBroadcastTextMessage(message, [this](int code, const std::string& msg){
});
}
发送图片消息
配置步骤
-
调用
getRoomContext
接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
监听消息附件上传进度。
-
调用
sendImageMessage
接口,发送图片消息。相关参数说明如下表所示。名称 描述 messageUuid 消息标识,可用于监听该消息附件上传的进度。 imagePath 图片路径。 width 图片宽度。 height 图片高度。 userUuids 用户 ID 列表。
如果userUuids
为空,表示发送全员消息。
如果userUuids
不为空,表示给单人或多人发送消息。callback 回调。
示例代码
实现发送图片消息的示例代码如下:
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
std::string messageUuid = "messageUuid";
std::string imagePath = "imagePath";
int width = 50;
int height = 50;
context->getChatController()->sendImageMessage(messageUuid, imagePath, width, height, userUuids, [this](int code, const std::string& msg){
});
}
发送文件消息
配置步骤
-
调用
getRoomContext
接口,获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
监听消息附件上传进度。
-
调用
sendFileMessage
接口,发送图片消息。相关参数说明如下表所示。名称 描述 messageUuid 消息标识,可用于监听该消息附件上传的进度。 filePath 文件路径。 userUuids 用户 ID 列表。
如果userUuids
为空,表示发送全员消息。
如果userUuids
不为空,表示给单人或多人发送消息。callback 回调。
示例代码
实现发送文件消息的示例代码如下:
auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
if(context){
std::string messageUuid = "messageUuid";
std::string filePath = "filePath";
context->getChatController()->sendFileMessage(messageUuid, filePath, userUuids, [this](int code, const std::string& msg){
});
}
API 参考
方法 | 功能描述 |
---|---|
sendBroadcastTextMessage |
发送广播消息。 |
sendDirectTextMessage |
发送定向消息。 |
sendGroupTextMessage |
发送多人消息。 |
sendImageMessage |
发送图片消息 |
sendFileMessage |
发送文件消息 |