最近会话

生成规则

SDK 会根据漫游消息和离线消息来生成初始会话列表, 在收到消息和发送消息之后 SDK 会更新会话列表

初始化参数

示例代码

var nim = NIM.getInstance({
    onsessions: onSessions,
    onupdatesession: onUpdateSession
});
function onSessions(sessions) {
    console.log('收到会话列表', sessions);
    data.sessions = nim.mergeSessions(data.sessions, sessions);
    updateSessionsUI();
}
function onUpdateSession(session) {
    console.log('会话更新了', session);
    data.sessions = nim.mergeSessions(data.sessions, session);
    updateSessionsUI();
}
function updateSessionsUI() {
    // 刷新界面
}

参数解释

会话对象

会话对象有以下字段:

未读数

SDK 会自动管理会话的未读数, 会话对象的unread的值为会话的未读数, 如果开发者发现会话的未读数大于收到的离线消息数, 那么需要从本地拉取未读取的消息

会话未读数的初始化在不同的配置环境下,会有不同的计算规则:

设置当前会话

nim.setCurrSession('sessionId')

重置会话未读数

nim.resetSessionUnread('sessionId')

重置所有会话未读数(内存中的)

nim.resetAllSessionUnread()

重置当前回话

nim.resetCurrSession();

获取本地会话列表

nim.getLocalSessions({
    lastSessionId: lastSessionId,
    limit: 100,
    done: getLocalSessionsDone
});
function getLocalSessionsDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('获取本地会话列表' + (!error?'成功':'失败'));
    if (!error) {
        onSessions(obj.sessions);
    }
}

插入一条本地会话记录

nim.insertLocalSession({
    scene: 'p2p',
    to: 'account',
    done: insertLocalSessionDone
});
function insertLocalSessionDone(error, obj) {
    console.log('插入本地会话记录' + (!error?'成功':'失败'), error, obj);
    if (!error) {
        onSessions(obj.session);
    }
}

更新本地会话

nim.updateLocalSession({
    id: 'p2p-account',
    localCustom: '{"key","value"}',
    done: updateLocalSessionDone
});
function updateLocalSessionDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('更新本地会话' + (!error?'成功':'失败'));
}

删除本地会话

nim.deleteLocalSession({
    id: 'p2p-account',
    done: deleteLocalSessionDone
});
function deleteLocalSessionDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('删除本地会话' + (!error?'成功':'失败'));
}

删除服务器上的会话

nim.deleteSession({
    scene: 'p2p',
    to: 'account',
    done: deleteSessionDone
});
function deleteSessionDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('删除服务器上的会话' + (!error?'成功':'失败'));
}

批量删除服务器上的会话

nim.deleteSessions({
    sessions: {[
        scene: 'p2p',
        to: 'account'
    ], [
        scene: 'p2p',
        to: 'account1'
    ]},
    done: deleteSessionsDone
});
function deleteSessionsDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('批量删除会话' + (!error?'成功':'失败'));
}