进入和离开聊天室

更新时间: 2025/03/04 11:09:08

聊天室是一种比群组更加松散、开放的形态,类似于一个广场,没有严格的准入机制,用户进出自由,一般来说也没有太固定的成员组织架构。典型的应用场景即我们非常熟悉的娱乐直播、教育直播内的聊天室。

本文介绍如何通过 NERoom SDK,进入和离开聊天室。

功能介绍

NERoom 聊天室的参与人数无上限。

聊天室相当于一个广场,只要有人看到了进入广场的门,任何人随时都可以进来,也可以随时离开。而群就像是一个公司,公司是一个更加私密的组织,必须是这个组织内的成员才能进入,成为成员可以是主动申请也可以是被邀请加入。

创建 NERoom 房间时,如果设置 enableChatroom 参数为 true,则服务端会自动创建聊天室。

聊天室中的成员可以相互发送和接收文本消息。

前提条件

  • 进入聊天室之前,请先通过 joinRoom 加入聊天室所在的 NERoom 房间,具体请参考 进入房间
  • 若未提前准备房间,需要先创建 NERoom 房间。在创建时,可以设置 NECreateRoomOptions.enableChatroomtrue,在创建房间后由服务器自动创建聊天室,具体请参考 创建房间

监听聊天室事件监听

在进入聊天室之前,请提前注册监听聊天室连接相关事件(NERoomListener)。

  • onChatroomStateChange:聊天室连接状态变更回调。聊天室内所有成员均会收到该回调。
  • onMemberJoinChatroom:进入聊天室回调。
  • onMemberLeaveChatroom:离开聊天室回调。离开聊天室后,不会继续重连。

调用 addRoomListener 方法监听聊天室连接相关事件。

示例代码如下:

JavaRoomContext.addRoomListener(new NERoomListener() {
    ...

    @Override
    public void onChatroomStateChange(@NonNull NEChatroomState state) {
        Log.d(TAG, "onChatroomStateChange state = " + state);
    }

    @Override
    public void onMemberJoinChatroom(@NonNull List<? extends NERoomMember> members) {
        for (NERoomMember member : members) {
            Log.d(TAG, "onMemberJoinChatroom member = " + member.getUuid());
        }
    }

    @Override
    public void onMemberLeaveChatroom(@NonNull List<? extends NERoomMember> members) {
        for (NERoomMember member : members) {
            Log.d(TAG, "onMemberLeaveChatroom member = " + member.getUuid());
        }
    }

    ...
}

进入聊天室

用户要在聊天室收发消息之前,必须先调用接口进入聊天室。聊天室只允许用户手动进入,无法进行邀请。

  1. 调用 getRoomContext 方法获取房间上下文。

    调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。

  2. 调用 joinChatroom 接口进入聊天室。

  3. 成员进入聊天室成功后,会触发 NERoomListener 协议中的 onMemberJoinChatroom 回调方法,通知房间内所有成员。

示例代码如下:

Java// 进入聊天室
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext != null) {
    roomContext.getChatController().joinChatroom(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");
        }
    });
}

离开聊天室

离开聊天室,会断开聊天室对应的链接,并不再收到该聊天室的任何消息。

  1. 调用 getRoomContext 方法获取房间上下文。

    调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。

  2. 调用 leaveChatroom 接口离开聊天室。

  3. 成员离开聊天室成功后,会触发 NERoomListener 协议中的 onMemberLeaveChatroom 回调方法,通知房间内所有其他成员。

示例代码如下:

//离开聊天室
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
    roomContext.getChatController().leaveChatroom();
}
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 前提条件
  • 监听聊天室事件监听
  • 进入聊天室
  • 离开聊天室