UNPKG

node-nim

Version:

NetEase IM nodejs wrapper based on NetEase IM C++ SDK

124 lines (123 loc) 5.74 kB
import { NIMClientAPI, GetCurrentServerTimeCallback, LoginCallback, LogoutCallback, MultiportPushConfigCallback, NIMLoginState, NIMLogoutType, SDKConfig, MultiSpotLoginRes, KickOtherRes, KickoutRes, LoginRes, NIMResCode } from '../nim_def/client_def'; import { EventEmitter } from 'eventemitter3'; export declare interface NIMClientEvents { /** NIM客户端掉线 */ disconnect: []; /** NIM客户端多点登录通知 */ multispotLogin: [MultiSpotLoginRes]; /** 多端推送开关同步 */ syncMultiportPushConfig: [number, boolean]; /** NIM客户端被踢 */ kickOtherClient: [KickOtherRes]; /** NIM客户端将本帐号的其他端踢下线结果 */ kickout: [KickoutRes]; /** NIM客户端自动重连 */ relogin: [LoginRes]; } export declare class NIMClient extends EventEmitter<NIMClientEvents> { client: NIMClientAPI; constructor(); /** 注册全局回调 */ initEventHandlers(): void; /** NIM SDK初始化 * @param appKey 应用注册的APP KEY * @param appDataDir 推荐用户目录放置在系统目录AppData\Local,默认只需要传入目录名,SDK会默认在系统目录下创建该级用户目录。如果要使用其他自定义路径,需传入绝对路径路径,并确保该目录有正确的读写权限。 * @param appInstallDir Deprecated * @param config 初始化参数 * @return bool 返回值true: 成功, false: 失败 */ init(appKey: string, appDataDir: string, appInstallDir: string, config: SDKConfig): boolean; /** NIM客户端登录 * @param appKey * @param account 帐号 * @param password 密码 * @param cb 登录流程的回调函数 * @param jsonExtension json扩展参数(v5.7.0 项目增加自定义参数字段) * @return bool 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * 302:账号或密码错误 * 403:禁止操作 * 408:请求超时 * 414:参数错误 * 415:网络连接出现错误 * 416:频率超限 * 422:账号被禁用 * </pre> */ login(appKey: string, account: string, password: string, cb: LoginCallback | null, jsonExtension: string): Promise<[LoginRes]>; /** NIM客户端注销/退出 * @param logoutType Logout操作类型,其定义见nim_client_def.h * @param cb 注销/退出的回调函数 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void 无返回值 * @note * <pre> * 200:成功 * 500:未知错误 * </pre> */ logout(logoutType: NIMLogoutType, cb: LogoutCallback | null, jsonExtension: string): Promise<[NIMResCode]>; /** NIM SDK清理 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void 无返回值 */ cleanup(jsonExtension: string): void; /** 获取SDK配置 * @return SDKConfig 返回值SDKConfig的引用 const类型,不可试图修改 */ getSDKConfig(): SDKConfig; /** 获取客户端登录状态 * @param jsonExtension json扩展参数(备用,目前不需要) * @return NIMLoginState 登录状态 */ getLoginState(jsonExtension: string): NIMLoginState; /** NIM客户端手动重连(注意 APP需要统一处理自动重连/手动重连的回调,因为如果处于某次自动重连的过程中调用手动重连接口,不起作用!) * @param jsonExtension json扩展参数(备用,目前不需要) * @return void 无返回值 */ relogin(jsonExtension: string): void; /** 将本帐号的其他端踢下线 * @param clients 设备标识 * @return bool 检查参数如果不符合要求则返回失败, 接口调用成功后的结果通过注册RegKickOtherClientCb回调得到 */ kickOtherClient(clients: Array<string>): void; /** (全局回调)设置多端推送 * @param switch_on 开关 * @param cb 回调函数 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void * @note * <pre> * 200:成功 * </pre> */ setMultiportPushConfigAsync(switch_on: boolean, cb: MultiportPushConfigCallback | null, jsonExtension: string): Promise<[NIMResCode, boolean]>; /** 获得多端推送设置 * @param cb 回调函数 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void */ getMultiportPushConfigAsync(cb: MultiportPushConfigCallback | null, jsonExtension: string): Promise<[NIMResCode, boolean]>; /** 获取SDK版本号 * @return string 版本号 */ getSDKVersion(): string; /** 获取当前服务器时间 * @param cb 操作结果的回调函数 * @param calc_local 是否在本地计算,false:直接到服务端查询 ,true:根据上次查询到的服务端时间与本地系统启动时间来计算,不会到服务端查询 * @return void * @note * <pre> * 由于网络上/下行的原因,返回的时间会存在一定误差, * 当 calc_local == false 时,如果跟上次调用该方法的时间间隔小于1000ms,SDK会采用 calc_local == true * 时的方案以减少服务端的压力,并会在回调中指明返回的时间是由本地计算的。 如果返回 code != 200,同样会返回一个本地计算结果 * </pre> */ getServerCurrentTime(cb: GetCurrentServerTimeCallback | null, calcLocal: boolean): Promise<[number, boolean, number]>; /** 获取当前登录的用户账号(accid) * @return string 当前登录的用户账号(accid) * @note 没有登录时将返回空字符串 */ getCurrentUserAccount(): string; }