UNPKG

node-nim

Version:

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

185 lines 7.07 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NIMClient = void 0; const client_def_1 = require("../nim_def/client_def"); const loader_1 = __importDefault(require("../loader")); const eventemitter3_1 = require("eventemitter3"); class NIMClient extends eventemitter3_1.EventEmitter { constructor() { super(); this.client = new loader_1.default.NIMClient({ emit: this.emit.bind(this) }); } /** 注册全局回调 */ initEventHandlers() { return this.client.InitEventHandlers(); } /** NIM SDK初始化 * @param appKey 应用注册的APP KEY * @param appDataDir 推荐用户目录放置在系统目录AppData\Local,默认只需要传入目录名,SDK会默认在系统目录下创建该级用户目录。如果要使用其他自定义路径,需传入绝对路径路径,并确保该目录有正确的读写权限。 * @param appInstallDir Deprecated * @param config 初始化参数 * @return bool 返回值true: 成功, false: 失败 */ init(appKey, appDataDir, appInstallDir, config) { return this.client.Init(appKey, appDataDir, appInstallDir, config); } /** 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, account, password, cb, jsonExtension) { return new Promise((resolve) => { this.client.Login(appKey, account, password, (res) => { if (cb) { cb(res); } if (res.res_code_ != client_def_1.NIMResCode.kNIMResSuccess || res.login_step_ == client_def_1.NIMLoginStep.kNIMLoginStepLogin) { resolve([res]); } }, jsonExtension); }); } /** NIM客户端注销/退出 * @param logoutType Logout操作类型,其定义见nim_client_def.h * @param cb 注销/退出的回调函数 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void 无返回值 * @note * <pre> * 200:成功 * 500:未知错误 * </pre> */ logout(logoutType, cb, jsonExtension) { return new Promise((resolve) => { this.client.Logout(logoutType, (res) => { if (cb) { cb(res); } resolve([res]); }, jsonExtension); }); } /** NIM SDK清理 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void 无返回值 */ cleanup(jsonExtension) { return this.client.Cleanup(jsonExtension); } /** 获取SDK配置 * @return SDKConfig 返回值SDKConfig的引用 const类型,不可试图修改 */ getSDKConfig() { return this.client.GetSDKConfig(); } /** 获取客户端登录状态 * @param jsonExtension json扩展参数(备用,目前不需要) * @return NIMLoginState 登录状态 */ getLoginState(jsonExtension) { return this.client.GetLoginState(jsonExtension); } /** NIM客户端手动重连(注意 APP需要统一处理自动重连/手动重连的回调,因为如果处于某次自动重连的过程中调用手动重连接口,不起作用!) * @param jsonExtension json扩展参数(备用,目前不需要) * @return void 无返回值 */ relogin(jsonExtension) { return this.client.Relogin(jsonExtension); } /** 将本帐号的其他端踢下线 * @param clients 设备标识 * @return bool 检查参数如果不符合要求则返回失败, 接口调用成功后的结果通过注册RegKickOtherClientCb回调得到 */ kickOtherClient(clients) { return this.client.KickOtherClient(clients); } /** (全局回调)设置多端推送 * @param switch_on 开关 * @param cb 回调函数 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void * @note * <pre> * 200:成功 * </pre> */ setMultiportPushConfigAsync(switch_on, cb, jsonExtension) { return new Promise((resolve) => { this.client.SetMultiportPushConfigAsync(switch_on, (res, open) => { if (cb) { cb(res, open); } resolve([res, open]); }, jsonExtension); }); } /** 获得多端推送设置 * @param cb 回调函数 * @param jsonExtension json扩展参数(备用,目前不需要) * @return void */ getMultiportPushConfigAsync(cb, jsonExtension) { return new Promise((resolve) => { this.client.GetMultiportPushConfigAsync((res, open) => { if (cb) { cb(res, open); } resolve([res, open]); }, jsonExtension); }); } /** 获取SDK版本号 * @return string 版本号 */ getSDKVersion() { return this.client.GetSDKVersion(); } /** 获取当前服务器时间 * @param cb 操作结果的回调函数 * @param calc_local 是否在本地计算,false:直接到服务端查询 ,true:根据上次查询到的服务端时间与本地系统启动时间来计算,不会到服务端查询 * @return void * @note * <pre> * 由于网络上/下行的原因,返回的时间会存在一定误差, * 当 calc_local == false 时,如果跟上次调用该方法的时间间隔小于1000ms,SDK会采用 calc_local == true * 时的方案以减少服务端的压力,并会在回调中指明返回的时间是由本地计算的。 如果返回 code != 200,同样会返回一个本地计算结果 * </pre> */ getServerCurrentTime(cb, calcLocal) { return new Promise((resolve) => { this.client.GetServerCurrentTime((rescode, calcLocal, time) => { if (cb) { cb(rescode, calcLocal, time); } resolve([rescode, calcLocal, time]); }, calcLocal); }); } /** 获取当前登录的用户账号(accid) * @return string 当前登录的用户账号(accid) * @note 没有登录时将返回空字符串 */ getCurrentUserAccount() { return this.client.GetCurrentUserAccount(); } } exports.NIMClient = NIMClient; //# sourceMappingURL=client.js.map