一、登录
注意:说明:
接口
chat.login(options);
参数
参数 options为 Object 类型,包含的属性值如下:
| 名称 | 类型 | 描述 |
| userID | String | 用户 ID。 |
| userSig | String | 用户登录即时通信 IM 的密码,其本质是对 UserID 等信息加密后得到的密文。具体生成方法请参见 生成 UserSig。 |
返回值
Promise
示例
let promise = chat.login({userID: 'your userID', userSig: 'your userSig'});promise.then(function(imResponse) { console.log(imResponse.data); // 登录成功 if (imResponse.data.repeatLogin === true) { // 标识账号已登录,本次登录操作为重复登录。 console.log(imResponse.data.errorInfo); }}).catch(function(imError) { console.warn('login error:', imError); // 登录失败的相关信息});
二、登出
登出即时通信 IM,通常在切换账号的时候调用,清除登录态以及内存中的所有数据。
注意:说明:
注意:1. 调用此接口的实例会发布 SDK_NOT_READY 事件,此时该实例下线,无法收、发消息。
注意:2. 如果你在 即时通信 IM 控制台 配置的“Web端实例同时在线个数”大于 1,且同一账号登录了a1和a2两个实例(含小程序端),当执行a1.logout()后,a1会下线,无法收、发消息。而a2实例不会受影响。
注意:3. 多实例被踢:基于第 2 点,如果“Web端实例同时在线个数”配置为 2,且你的某一账号已经登录了 a1,a2两个实例,当使用此账号成功登录第三个实例a3时,a1或a2中的一个实例会被踢下线(通常是最先处在登录态的实例会触发),这种情况称之为“多实例被踢”。假设a1实例被踢下线,a1实例内部会执行登出流程,然后抛出 KICKED_OUT 事件,接入侧可以监听此事件,并在触发时跳转到登录页。此时a1实例下线,而a2、a3实例可以正常运行。
接口
chat.logout();
参数
无
返回值
Promise
示例
let promise = chat.logout();promise.then(function(imResponse) { console.log(imResponse.data); // 登出成功}).catch(function(imError) { console.warn('logout error:', imError);});
三、销毁
销毁 SDK 实例。SDK 会先 logout,然后断开 WebSocket 长连接,并释放资源。
接口
chat.destroy();
参数
无
返回值
Promise
示例
let promise = chat.destroy();
四、登录设置
默认情况下,SDK 不支持多实例登录,即如果此已在其他页面登录,若继续在当前页面登录成功,有可能会将其他页面踢下线。用户被踢下线时会触发事件TencentCloudChat.EVENT.KICKED_OUT,用户可在监听到事件后做相应处理。
注意:说明:
注意:1. 如需支持 Web 多实例登录(允许在多个网页中同时登录同一账号),请到 即时通信 IM 控制台,找到相应 SDKAppID,应用配置 > 功能配置 > 登录与消息 > Web 端可同时在线个数配置实例个数。配置将在5分钟内生效。
注意:2. 默认情况下,每种平台只支持1个终端在线(如 Android 和 Android 会互踢)。如果需要使用“同平台多设备在线”功能,请 升级旗舰版或企业版套餐包 ,详见 计费详情。
let onKickedOut = function(event) { console.log(event.data.type); // TencentCloudChat.TYPES.KICKED_OUT_MULT_ACCOUNT(Web端,同一账号,多页面登录被踢) // TencentCloudChat.TYPES.KICKED_OUT_MULT_DEVICE(同一账号,多端登录被踢) // TencentCloudChat.TYPES.KICKED_OUT_USERSIG_EXPIRED(签名过期) // TencentCloudChat.TYPES.KICKED_OUT_REST_API(REST API kick 接口踢出)};chat.on(TencentCloudChat.EVENT.KICKED_OUT, onKickedOut);