NIMSDK-AOS 10.4.0-beta
载入中...
搜索中...
未找到
NimOnlineStateEvent.java
浏览该文件的文档.
1package com.netease.nimlib.sdk.event.model;
2
3import com.netease.nimlib.log.NimLog;
4import java.util.ArrayList;
5import java.util.List;
6import org.json.JSONArray;
7import org.json.JSONException;
8import org.json.JSONObject;
9
10/**
11 * 在线状态事件
12 */
13
14public class NimOnlineStateEvent {
15
16 /**
17 * 在线状态事件类型
18 */
19 public static final int EVENT_TYPE = NimEventType.ONLINE_STATE.getValue();
20
21 /**
22 * 修改在线状态事件配置:事件类型为1,事件值为10001,
23 * 对于类型为1的事件,服务器保留 1~9999 的事件值
24 */
25 public static final int MODIFY_EVENT_CONFIG = 10001;
26
27 private static final String KEY_NIM_CONFIG = "online";
28
29 /**
30 * 是否是在线状态事件
31 */
32 public static boolean isOnlineStateEvent(Event event) {
33 return event != null && event.getEventType() == EVENT_TYPE;
34 }
35
37 if (!isOnlineStateEvent(event)) {
38 return null;
39 }
41 }
42
43 /**
44 * 获取在线状态事件中服务端配置 nim_config
45 * {"online":[1,2,3...]}
46 *
47 * @param event 事件
48 * @return 在线客户端列表
49 */
50 public static List<Integer> getOnlineClients(Event event) {
51 List<Integer> clients = null;
52 try {
53 JSONObject jsonObject = new JSONObject(event.getNimConfig());
54 JSONArray array = jsonObject.optJSONArray(KEY_NIM_CONFIG);
55 if (array == null) {
56 return null;
57 }
58 clients = new ArrayList<>();
59 for (int i = 0; i < array.length(); i++) {
60 int clientType = array.getInt(i);
61 clients.add(clientType);
62 }
63 } catch (JSONException e) {
64 NimLog.e("NimOnlineStateEvent", "getOnlineClients error: " + e);
65 }
66 return clients;
67 }
68
69 /**
70 * 在线状态事件值
71 */
73 /**
74 * 登录
75 */
77 /**
78 * 登出
79 */
81 /**
82 * 断开连接
83 */
85
86 private final int value;
87
89 this.value = value;
90 }
91
92 public int getValue() {
93 return value;
94 }
95
97 for (OnlineStateEventValue e : values()) {
98 if (e.getValue() == value) {
99 return e;
100 }
101 }
102 return null;
103 }
104 }
105}
static OnlineStateEventValue getOnlineStateEventValue(Event event)
static final int MODIFY_EVENT_CONFIG
修改在线状态事件配置:事件类型为1,事件值为10001, 对于类型为1的事件,服务器保留 1~9999 的事件值
static boolean isOnlineStateEvent(Event event)
是否是在线状态事件
static final int EVENT_TYPE
在线状态事件类型
static List< Integer > getOnlineClients(Event event)
获取在线状态事件中服务端配置 nim_config {"online":[1,2,3...]}
云信预定义事件类型,范围为:1~99999
ONLINE_STATE
在线状态事件,类型为1,事件值参考 NimOnlineStateEvent.OnlineStateEventValue