进入和离开聊天室
更新时间: 2025/03/04 10:52:47
聊天室是一种比群组更加松散、开放的形态,类似于一个广场,没有严格的准入机制,用户进出自由,一般来说也没有太固定的成员组织架构。典型的应用场景即我们非常熟悉的娱乐直播、教育直播内的聊天室。
本文介绍如何通过 NERoom SDK,进入和离开聊天室。
功能介绍
NERoom 聊天室的参与人数无上限。
聊天室相当于一个广场,只要有人看到了进入广场的门,任何人随时都可以进来,也可以随时离开。而群就像是一个公司,公司是一个更加私密的组织,必须是这个组织内的成员才能进入,成为成员可以是主动申请也可以是被邀请加入。
创建 NERoom 房间时,如果设置 enableChatroom
参数为 true
,则服务端会自动创建聊天室。
聊天室中的成员可以相互发送和接收文本消息。
前提条件
- 进入聊天室之前,请先通过
joinRoom
加入聊天室所在的 NERoom 房间,具体请参考 进入房间。 - 若未提前准备房间,需要先创建 NERoom 房间。在创建时,可以设置
NECreateRoomOptions.enableChatroom
为true
,在创建房间后由服务器自动创建聊天室,具体请参考 创建房间。
监听聊天室事件监听
在进入聊天室之前,请提前注册监听聊天室连接相关事件(NERoomListener
)。
onChatroomStateChange
:聊天室连接状态变更回调。聊天室内所有成员均会收到该回调。onMemberJoinChatroom
:进入聊天室回调。onMemberLeaveChatroom
:离开聊天室回调。离开聊天室后,不会继续重连。
调用 addRoomListener
方法监听聊天室连接相关事件。
示例代码如下:
Swiftclass RoomController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 获取roomContext
guard let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID") else {
return
}
// 添加监听
roomContext.addRoomListener(listener: self)
}
}
//监听 NERoomListener
extension RoomController: NERoomListener {
func onChatroomStateChange(state: NEChatroomState){
//聊天室状态回调
}
func onMemberJoinChatroom(members: [NERoomMember]) {
//成员加入聊天室
}
func onMemberLeaveChatroom(members: [NERoomMember]) {
//成员离开聊天室
}
}
进入聊天室
用户要在聊天室收发消息之前,必须先调用接口进入聊天室。聊天室只允许用户手动进入,无法进行邀请。
-
调用
getRoomContext
接口获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
joinChatroom
接口进入聊天室。 -
成员进入聊天室成功后,会触发
NERoomListener
协议中的onMemberJoinChatroom
回调方法,通知房间内所有成员。
示例代码如下:
Swift//进入聊天室
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
roomContext.chatController.joinChatroom { code, string in
if code == 0 {
print("Successfully join chatroom")
} else {
print("Failed to join chatroom. Rease: \(string ?? "")")
}
}
离开聊天室
离开聊天室,会断开聊天室对应的链接,并不再收到该聊天室的任何消息。
-
调用
getRoomContext
接口获取房间上下文。调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。
-
调用
leaveChatroom
接口离开聊天室。 -
成员离开聊天室成功后,会触发
NERoomListener
协议中的onMemberLeaveChatroom
回调方法,通知房间内所有其他成员。
示例代码如下:
Swift//离开聊天室
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
roomContext.chatController.leaveChatroom { code, string in
if code == 0 {
print("Successfully leave chatroom")
} else {
print("Failed to leave chatroom. Reason: \(string ?? "")")
}
}