实现聊天室消息(基于NERoom)
更新时间: 2024/11/26 15:44:05
语聊房中的聊天消息功能可以让用户在语聊房中自由交流,促进用户之间的沟通交流,提高用户参与度。本文介绍如何通过 NERoom 房间组件实现语聊房的聊天消息,包括文本消息、自定义消息。
功能介绍
聊天消息功能可以让用户在语聊房中建立更加紧密的社交关系,提高用户对语聊房的依赖和粘性,从而增加用户的使用时长和活跃度。
语聊房中的消息类型主要是文本消息,包括:文本、超链接、emoji 表情符号等。
功能原理
消息收发流程如下:
- 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
- IM服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
- 目标用户收到消息。
API 调用时序图
sequenceDiagram
autonumber
participant 应用层
participant NERoom 房间组件
应用层->>NERoom 房间组件: addRoomListener 添加监听
应用层->>NERoom 房间组件: joinChatroom 进入聊天室
NERoom 房间组件-->>应用层: onMemberJoinChatroom
rect rgb(191, 223, 255)
应用层 ->> NERoom 房间组件: sendDirectTextMessage 定向给某个人发送文本消息
应用层 ->> NERoom 房间组件:sendGroupTextMessage 给多人发送文本消息
NERoom 房间组件-->>应用层: onReceiveChatroomMessages
end
实现方法
- 调用
addRoomListener
接口添加相关监听,聊天消息相关的事件主要如下:
func addListener() {
let context = NERoomKit.shared().roomService.getRoomContext(roomUuid: roomUuid)
context?.addRoomListener(listener: self)
}
func onMemberJoinChatroom(members: [NERoomMember]) {
// 有人加入聊天室
}
func onMemberLeaveChatroom(members: [NERoomMember]) {
// 有人离开聊天室
}
func onReceiveChatroomMessages(messages: [NERoomChatMessage]) {
// 收到聊天室消息
}
- 调用
joinChatroom
接口进入聊天室。
let context = NERoomKit.shared().roomService.getRoomContext(roomUuid: roomUuid)
context?.chatController.joinChatroom() { code, msg, _ in
if code != 0 {
print("加入聊天室失败 code:\(code) error:\(msg)")
}
}
- 成员进入聊天室成功后,会触发
NERoomListener
协议中的onMemberJoinChatroom
回调方法,通知房间内所有成员。 - 调用
sendDirectTextMessage
接口,定向给某个人发送文本消息。
let context = NERoomKit.shared().roomService.getRoomContext(roomUuid: roomUuid)
context?.chatController.sendDirectTextMessage(userUuid: "对方的uuid", message: "消息内容") { code, msg, _ in
if code != 0 {
print("发送聊天室消息失败 code:\(code) error:\(msg)")
}
}
- 调用
sendGroupTextMessage
接口,给多人发送文本消息。
let context = NERoomKit.shared().roomService.getRoomContext(roomUuid: roomUuid)
context?.chatController.sendGroupTextMessage(userUuids: ["对方的uuid"], message: "消息内容") { code, msg, _ in
if code != 0 {
print("发送聊天室消息失败 code:\(code) error:\(msg)")
}
}
- 接收方收到文本消息时,会触发
onReceiveChatroomMessages
回调。
此文档是否对你有帮助?