Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

nodeqim

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nodeqim - npm Package Compare versions

Comparing version
0.0.4
to
0.0.5
+1
-1
package.json
{
"name": "nodeqim",
"version": "0.0.4",
"version": "0.0.5",
"description": "qcloud im for nodejs",

@@ -5,0 +5,0 @@ "main": "qim/qim.js",

+145
-89

@@ -14,9 +14,20 @@ 'use strict';

MSG_ELEMENT_TYPE: im.MSG_ELEMENT_TYPE,
LOG_INFO: 'info',
LOG_ERROR: 'error',
LOG_CLOSE: 'close',
EVENT: {
MESSAGE_RECV: 'message_recv',
KICKED_OUT: 'kicked_out',
CONNECT_OFF: 'connect_off',
CONNECT_ON: 'connect_on',
RECONNECT: 'reconnect'
},
_log_level: 'error', // close, debug, error
_log_level: this.LOG_INFO, // close, debug, error
_is_im_login: false,
_user_id: '',
_listeners: {},
_listeners: {},
inner_listeners: {

@@ -29,39 +40,50 @@ "onConnNotify": onConnNotify, //监听连接状态回调变化事件,必填

},
/** 内部接口 */
_info: function(msg){ this._log_level === this.LOG_INFO && console.log("[TAG-QIM] "+msg); },
_error: function(msg){ this._log_level != this.LOG_CLOSE && console.error("[TAG-QIM] "+msg); },
/** 对外接口 */
init: function(onErrorCallback, logLevel = 'error'){
this._listeners.onError = onErrorCallback;
this._log_level = logLevel;
setLogLevel: function(level){
this._log_level = level;
},
setMsgRecvListener: function(listener){
this._listeners.onMsgRecv = listener;
},
/** 登录相关 */
login: function(sdkAppId, userId, userSig, callback){
login: function(sdkAppId, userId, userSig){
this._info("login->sdkappid:"+sdkAppId+", userId:"+userId);
return new Promise((resolve, reject)=>{
im.login({
sdkAppID: sdkAppId,
accountType: ""+sdkAppId,
identifier: userId,
userSig: userSig
}, this.inner_listeners, {isLogOn: this._log_level=='debug'},
(rsp)=>{
this._is_im_login = true;
this._user_id = userId;
this._log("[TAG-QIM] login->success: "+userId);
callback(0, "");
},
(err)=>{
this._log("[TAG-QIM] login->failed: "+err.ErrorInfo);
callback(err.ErrorCode, err.ErrorInfo);
})
sdkAppID: sdkAppId,
accountType: ""+sdkAppId,
identifier: userId,
userSig: userSig
}, this.inner_listeners, {isLogOn: false},
(rsp)=>{
this._is_im_login = true;
this._user_id = userId;
this._info("login->completed: "+userId);
resolve(rsp);
},
(err)=>{
this._error("login->failed: "+err);
reject(err);
})
})
},
logout: function(callback){
logout: function(){
this._info("logout->userid: "+this._user_id);
return Promise((resolve, reject)=>{
im.logout((rsp)=>{
this._is_im_login = false;
callback(0, rsp);
this._is_im_login = false;
this._info("logout->completed: "+this._user_id);
resolve(rsp);
}, (err)=>{
callback(err.ErrorCode, err.ErrorInfo);
this._error("login->failed: "+err);
reject(err);
})
})
},
/** 群组相关 */
createGroup: function(groupId, callback) {
createGroup: function(groupId) {
this._info("createGroup->groupId: "+groupId);
return new Promise((resolve, reject)=>{
var options = {

@@ -74,48 +96,59 @@ 'GroupId': groupId,

};
this._log("[TAG-QIM] createGroup->start create group:" + groupId)
im.createGroup(
options,
function (resp) {
callback(0, resp);
log.info("[TAG-QIM] create Group success");
this._info("createGroup->completed: "+groupId);
resolve(resp);
},
function (err) {
callback(err.ErrorCode, err.ErrorInfo);
this.error("createGroup->fail: "+err);
reject(err);
}
)
})
},
joinGroup: function(groupId, callback) {
joinGroup: function(groupId) {
this._info("joinGroup->groupId: "+groupId);
return new Promise((resolve, reject)=>{
var options = {
'GroupId': groupId
};
this._log("[TAG-QIM] joinGroup->start join group:" + groupId)
im.applyJoinGroup(
options,
function (resp) {
callback(0, resp);
this._info("joinGroup->completed: "+groupId);
resolve(resp);
},
function (err) {
callback(err.ErrorCode, err.ErrorInfo);
this._error("joinGroup->fail:"+err);
reject(err);
}
)
})
},
quitGroup: function(groupId, callback){
var options = {
'GroupId': groupId
};
this._log("[TAG-QIM] quitGroup->group:"+groupId);
im.quitGroup(
options,
function (resp) {
callback(0, resp);
},
function (err) {
callback(err.ErrorCode, err.ErrorInfo);
}
)
quitGroup: function(groupId){
this._info("quitGroup->groupId: "+groupId);
return new Promise((resolve, reject)=>{
var options = {
'GroupId': groupId
};
im.quitGroup(
options,
function (resp) {
this._info("quitGroup->completed:"+groupId);
resolve(resp);
},
function (err) {
this._error("quitGroup->fail:"+err);
reject(err);
}
)
})
},
getGroupList: function(callback) {
getGroupList: function() {
this._info("getGroupList->enter");
return new Promise((resolve, reject)=>{
var options = {
'Member_Account': this._user_id,
'Limit': 20,
'Limit': 60,
'Offset': 0,

@@ -150,3 +183,4 @@ 'GroupBaseInfoFilter': [

if (!rsp.GroupIdList || rsp.GroupIdList.length == 0) {
callback(0, data);
this._info("getGroupList->completed with empty");
resolve(data);
return;

@@ -184,12 +218,19 @@ }

}
callback(0, data);
resolve(data);
},
function (err) {
callback(err.ErrorCode, err.ErrorInfo);
this._info("getGroupList->fail:"+err);
reject(err);
}
)
})
},
/** 消息相关 */
sendTextMessage: function(groupId, text, callback=null) {
if (!text || text.length==0) callback && callback();
sendTextMessage: function(groupId, text) {
this._info("sendTextMessage->text: "+text+"/"+groupId);
return new Promise((resolve, reject)=>{
if (!text || text.length==0){
reject({ErrorCode: -1, ErrorInfo: "发送消息不能为空"});
this._error("sendTextMessage->fail with empty");
}
var session = new im.Session(im.SESSION_TYPE.GROUP, groupId, groupId, "", Math.round(new Date().getTime() / 1000));

@@ -200,8 +241,19 @@ var msg = new im.Msg(session, true, -1, -1, -1, this._user_id, 0, "");

im.sendMsg(msg, (rsp) => {
this._log("[TAG-QIM] sendTextMessage->groupId:" + groupId + ", rsp: " + rsp.ErrorCode+"|"+rsp.ErrorInfo);
if (null != callback) callback(rsp);
if (rsp.ErrorCode == 0){
this._info("sendTextMessage->completed");
resolve(rsp);
}else{
this._error("sendTextMessage->fail: "+rsp)
reject(rsp);
}
});
})
},
sendCustomMessage: function(groupId, data, ext, callback=null) {
if (!data || data.length==0) callback && callback();
this._info("sendCustomMessage->text: "+text+"/"+groupId);
return new Promise((resolve, reject)=>{
if (!data || data.length==0){
this._error("sendCustomMessage->fail with empty");
reject({ErrorCode: -1, ErrorInfo: "发送消息不能为空"});
}
var session = new im.Session(im.SESSION_TYPE.GROUP, groupId, groupId, "", Math.round(new Date().getTime() / 1000));

@@ -212,33 +264,33 @@ var msg = new im.Msg(session, true, -1, -1, -1, this._user_id, 0, "");

im.sendMsg(msg, (rsp) => {
rsp.ErrorCode!=0 && this._log("[TAG-QIM] sendCustomMessage->groupId:" + groupId + ", rsp: " + rsp.ErrorCode+"|"+rsp.ErrorInfo);
if (null != callback) callback(rsp);
if (rsp.ErrorCode == 0){
this._info("sendTextMessage->completed");
resolve(rsp);
}else{
this._error("sendTextMessage->fail: "+rsp)
reject(rsp);
}
});
})
},
/** 测试 */
_log: function(msg){
this._log_level === 'debug' && console.log(msg);
/** 监听回调 */
on: function(event, listener){
this._listeners[event] = listener;
},
_err: function(msg){
this._log_level != 'close' && console.error(msg);
},
/** 内部接口 */
notifyEvent: function(code, msg){
if (this._listeners.hasOwnProperty('onError')){
this._listeners.onError(code, msg);
notifyEvent: function(event, data){
if (this._listeners.hasOwnProperty(event)){
this._listeners[event](data);
}
},
_onKickedEventCall: function(){
this._log("[TAG-QIM] onKickedEventCall->您的帐号已在其他地方登录");
this.notifyEvent(-2, '您的帐号已在其他地方登录!');
this._info("onKickedEventCall->您的帐号已在其他地方登录");
this.notifyEvent(this.EVENT.KICKED_OUT, {ErrorCode: -2, ErrorInfo: '您的帐号已在其他地方登录!'});
},
_onMsgNotify: function(newMsgList) {
//console.warn(newMsgList);
this._info("onMsgNotify->recv msg");
var sess, newMsg;
// 被踢后不处理消息
if (!this._is_im_login)return;
//获取所有聊天会话
var sessMap = im.MsgStore.sessMap();
for (var j in newMsgList) {//遍历新消息

@@ -249,5 +301,8 @@ newMsg = newMsgList[j];

var elem = elems[i];
if (this._listeners.hasOwnProperty('onMsgRecv')){
this._listeners.onMsgRecv(newMsg.getSession().id(), newMsg.getFromAccount(), elem, newMsg.getTime());
}
this.notifyEvent(this.EVENT.MESSAGE_RECV, {
session_id: newMsg.getSession().id(),
sender: newMsg.getFromAccount(),
element: elem,
timestamp: newMsg.getTime()
})
}

@@ -260,16 +315,17 @@ }

case im.CONNECTION_STATUS.ON:
this._log('[TAG-QIM] 建立连接成功: ' + resp.ErrorInfo);
this._info('connect->建立连接成功: ' + resp.ErrorInfo);
this.notifyEvent(this.EVENT.CONNECT_ON, {ErrorCode: 0, ErrorInfo: resp.ErrorInfo});
break;
case im.CONNECTION_STATUS.OFF:
info = '连接已断开,无法收到新消息,请检查下您的网络是否正常: ' + resp.ErrorInfo;
this._log("[TAG-QIM] "+info);
this.notifyEvent(1, "连接已断开: " + info);
this._info("connect->"+info);
this.notifyEvent(this.EVENT.CONNECT_ON, {ErrorCode: -1, ErrorInfo: info});
break;
case im.CONNECTION_STATUS.RECONNECT:
info = '连接状态恢复正常: ' + resp.ErrorInfo;
this._log('[TAG-QIM] 连接状态恢复正常: ' + info);
this.notifyEvent(2, "连接状态恢复正常" + info);
this._info('connect->连接状态恢复正常: ' + info);
this.notifyEvent(this.EVENT.RECONNECT, {ErrorCode: 0, ErrorInfo: info});
break;
default:
this._err('[TAG-QIM] 未知连接状态: ' + resp.ErrorInfo);
this._error('connect->未知连接状态: ' + resp.ErrorInfo);
break;

@@ -276,0 +332,0 @@ }

Sorry, the diff of this file is too big to display