# 在线列表

`聊天室模块(chat)` 提供用户列表相关 Api，用于开发者开发在线人数、在线列表等功能。

## 一、分页获取在线列表

**Api 方法：** `getOnlineUserList(options?: GetUserListOptions): Promise<UserListResult>`

**参数说明：**

* options：获取选项，`GetUserListOptions` 类型，选传，默认 `{}`，详细类型说明如下

| 参数名          | 说明   | 类型       | 必须 | 默认值   |
| ------------ | ---- | -------- | -- | ----- |
| `pageNumber` | 页数   | `number` | 否  | `1`   |
| `pageSize`   | 每页数量 | `number` | 否  | `100` |

**返回值说明：** `Promise<UserListResult>` 类型，详细类型说明如下

| 属性名        | 说明   | 类型                                |
| ---------- | ---- | --------------------------------- |
| `count`    | 在线人数 | `number`                          |
| `userlist` | 列表   | `ChatMessageUser<ChatUserType>[]` |

**示例：**

```js
const result = await watchCore.chat.getOnlineUserList({
  pageNumber: 1,
  pageSize: 100,
});

console.log('在线列表：', result.userlist);
```

## 二、开始在线用户列表轮询

**说明：** 每隔 1 分钟轮询在线用户列表，调用后会立即触发一次

**Api 方法：** `startOnlineUserListPolling(): void`

## 三、结束在线用户列表轮询

**Api 方法：** `stopOnlineUserListPolling(): void`

## 四、获取在线用户列表新接口

**Api 方法：** `getOnlineUserListNew(): Promise<UserListResult>`

**返回值说明：** `Promise<UserListResult>` 类型，详细类型说明如下

| 属性名        | 说明   | 类型                                |
| ---------- | ---- | --------------------------------- |
| `count`    | 在线人数 | `number`                          |
| `userlist` | 列表   | `ChatMessageUser<ChatUserType>[]` |

**示例：**

```js
const result = await watchCore.chat.getOnlineUserListNew();
console.log('在线列表：', result.userlist);
```

## 五、获取聊天室的实时在线人数

通过 `getOnlineUserCount` 获取实时在线人数，[ChatEvents.OnlineUserCountChange](https://git.polyv.net/help-center/document-center/-/blob/master/live/js/new_sdk/live_watch_sdk/articles/modules/chat/module-events.md?id=eventdoc_chatevents_onlineusercountchange) 事件监听聊天室在线人数的改变。

**Api 方法：** `getOnlineUserCount(): number`

**返回值说明：** 实时在线人数

**示例：**

```js
const onlineUserCount = watchCore.chat.getOnlineUserCount();
console.log('当前聊天室在线人数：', onlineUserCount);

// 监听人数改变
watchCore.chat.eventEmitter.on(ChatEvents.OnlineUserCountChange, (data) => {
  console.log('在线人数改变：', data.onlineUserCount);
});
```
