Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface SessionInterface

Hierarchy

  • SessionInterface

Implemented by

Index

Methods

  • addStickTopSession(options: { id: string; topCustom?: string; done: any }): void
  • deleteLocalSession(options: { id: string; isDeleteRoaming?: boolean; isLogic?: boolean; done?: any }): void
  • 删除指定的本地数据库会话。以及可选删除服务器上漫游消息。

    关联函数

    示例场景

    示例

    nim.deleteLocalSession({
    id: 'p2p-user1',
    isLogic: false,
    isDeleteRoaming: false,
    done: function(err, session) {
    if (err) {
    console.log('删除本地会话失败', err)
    } else {
    console.log('删除本地会话成功', session)
    }
    }
    })

    Parameters

    • options: { id: string; isDeleteRoaming?: boolean; isLogic?: boolean; done?: any }

      入参

      • id: string

        会话 id

      • Optional isDeleteRoaming?: boolean

        是否需要删除此会话的服务器漫游消息, 默认 false。8.2.0 版本新增,写 true 的话,下次登录服务器不再下发此会话的漫游消息,此规则会影响多端登录的其他端,慎用。

      • Optional isLogic?: boolean

        是否为逻辑删除, 默认 false。7.9.1 版本新增,逻辑删除不会真的删除本地会话,而是标记会话为"已删除"状态,这样可以保留会话的unreadmsgReceiptTime,下次新建该会话时,可以保持正确的未读数和已读时间戳

      • done?:function

    Returns void

  • deleteSession(options: { scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): void
  • deleteSessions(options: { sessions: NIMSession[]; done?: any }): void
  • deleteSessionsWithMoreRoaming(options: { id: string; done?: any }): void
  • deleteStickTopSession(options: { id: string; done: any }): void
  • getLocalSession(options: { sessionId: string; done: any }): void
  • 通过 sessionId 获取本地数据库里的会话

    示例

    nim.getLocalSession({
    sessionId: 'p2p-user1',
    done: function(err, session) {
    if (err) {
    console.log('获取本地会话失败', err)
    } else {
    console.log('获取本地会话成功', session)
    }
    }
    })

    Parameters

    Returns void

  • getLocalSessions(options: { lastSessionId?: string; limit?: number; reverse?: boolean; done: any }): void
  • 分页查询会话列表

    示例场景

    示例

    // 查询第一页会话列表
    nim.getLocalSessions({
    limit: 20,
    reverse: true,
    done: function(err, data) {
    if (err) {
    console.log('获取会话列表失败', err)
    } else {
    console.log('会话列表', data.sessions)
    // 查询下一页
    if (data.sessions.length > 0) {
    var lastSession = data.sessions[data.sessions.length - 1]
    // 使用 lastSession.id 作为 lastSessionId 查询下一页
    }
    }
    }
    })

    Parameters

    • options: { lastSessionId?: string; limit?: number; reverse?: boolean; done: any }
      • Optional lastSessionId?: string

        上一页最后一条会话的 id,第一次查询可以不填。

      • Optional limit?: number

        分页查询数量限制,默认 100 条记录

      • Optional reverse?: boolean

        查询顺序

        false 从最早的会话开始查找

        true 从最晚的会话开始查找

      • done:function

    Returns void

  • getSessionsWithMoreRoaming(options: { id: string; done?: any }): void
  • getStickTopSessions(options: { done: any }): void
  • 获取云端置顶会话的列表

    示例

    nim.getStickTopSessions({
    done: function(err, sessions) {
    if (err) {
    console.log('获取置顶会话列表失败', err)
    } else {
    console.log('置顶会话列表', sessions)
    }
    }
    })

    Parameters

    Returns void

  • insertLocalSession(options: { scene: "p2p" | "team" | "superTeam"; to: string; done?: any }): void
  • 往本地数据库 indexdb 中插入一个会话

    • 如果不支持数据库, 则会在 sdk 内存中插入一条会话。不推荐没有 db 时使用该函数。用户应该在自己的内存数据中维护会话列表。

    • 如果会话已存在, 那么会返回错误

    • 如果有对应会话的本地历史消息, 那么会更新会话的 lastMsg 为最后一条消息

    • 插入成功后, 会触发onupdatesession回调

    示例

    nim.insertLocalSession({
    scene: 'p2p',
    to: 'user1',
    done: function(err, session) {
    if (err) {
    console.log('插入本地会话失败', err)
    } else {
    console.log('插入本地会话成功', session)
    }
    }
    })

    Parameters

    Returns void

  • resetAllSessionUnread(done: (err: null | Error) => void): void
  • 重置所有会话的未读数。

    注: !!如果不等待异步 done 结束而直接使用 updateLocalSession 更新本地会话会因为异步时机问题, 让未读数错乱.

    注意

    示例

    nim.resetAllSessionUnread(function(err) {
    if (err) {
    console.log('重置所有会话未读数失败', err)
    } else {
    console.log('重置所有会话未读数成功')
    }
    })

    Parameters

    • done: (err: null | Error) => void

      异步完成(清除未读数)的回调. v9.20.12+ 才开始支持此参数.

        • (err: null | Error): void
        • Parameters

          • err: null | Error

          Returns void

    Returns void

  • resetCurrSession(sessionId: string): void
  • 取消 "setCurrSession" 的效果。取消后,会话收到消息后,未读数会变更。

    关联函数

    示例

    nim.resetCurrSession('p2p-user1')
    console.log('已取消当前会话设置')

    Parameters

    • sessionId: string

    Returns void

  • resetSessionUnread(sessionId: string, done: (err: null | Error, failedSessionId: string) => void): void
  • 重置某个会话的未读数。重置超级群未读数请使用 SessionInterface.resetSuperTeamSessionsUnread

    注意

    示例

    nim.resetSessionUnread('p2p-user1', function(err, failedSessionId) {
    if (err) {
    console.log('重置未读数失败', failedSessionId, err)
    } else {
    console.log('重置未读数成功')
    }
    })

    Parameters

    • sessionId: string
    • done: (err: null | Error, failedSessionId: string) => void
        • (err: null | Error, failedSessionId: string): void
        • Parameters

          • err: null | Error
          • failedSessionId: string

          Returns void

    Returns void

  • resetSessionsUnread(sessionIds: string[], done: (err: null | Error) => void): Promise<void>
  • 重置某些会话的未读数。重置超级群未读数请使用 SessionInterface.resetSuperTeamSessionsUnread

    注意

    示例

    nim.resetSessionsUnread(['p2p-user1', 'p2p-user2', 'team-123'], function(err) {
    if (err) {
    console.log('批量重置未读数失败', err)
    } else {
    console.log('批量重置未读数成功')
    }
    })

    Parameters

    • sessionIds: string[]
    • done: (err: null | Error) => void
        • (err: null | Error): void
        • Parameters

          • err: null | Error

          Returns void

    Returns Promise<void>

  • resetSuperTeamSessionsUnread(sessionIds: string[], done: (err: null | Error) => void): Promise<void>
  • 重置某些超级群的会话的未读数

    注意

    示例

    nim.resetSuperTeamSessionsUnread(['superTeam-123', 'superTeam-456'], function(err) {
    if (err) {
    console.log('重置超级群未读数失败', err)
    } else {
    console.log('重置超级群未读数成功')
    }
    })

    Parameters

    • sessionIds: string[]
    • done: (err: null | Error) => void
        • (err: null | Error): void
        • Parameters

          • err: null | Error

          Returns void

    Returns Promise<void>

  • setCurrSession(sessionId: string, done: (err: null | Error) => void): void
  • 设置"进入当前会话".

    注:这是 sdk 的一个便于操作的复合接口,做的逻辑有:在内存里记录当前进入的会话,进入会话时调用 resetSessionUnread 清空未读,且后续 onMsg 接收新消息时 resetSessionUnread 清空未读。

    注2:如果不满足开发者的场景,开发者可以组合调用 API,须小心接到新消息而触发的 onupdatesessions 变更时,忽略当前选中的会话的 unread 数变更。

    注3: !!如果不等待异步 done 结束而直接使用 updateLocalSession 更新本地会话会因为异步时机问题, 让未读数错乱.

    关联函数

    示例

    nim.setCurrSession('p2p-user1', function(err) {
    if (err) {
    console.log('设置当前会话失败', err)
    } else {
    console.log('设置当前会话成功,未读数已清零')
    }
    })

    Parameters

    • sessionId: string

      会话 id入参

    • done: (err: null | Error) => void

      异步完成(清除未读数)的回调. v9.20.12+ 才开始支持此参数.

        • (err: null | Error): void
        • Parameters

          • err: null | Error

          Returns void

    Returns void

  • updateLocalSession(options: { id: string; localCustom?: string; needNotify?: boolean; done?: any }): void
  • 更新本地数据库里的会话

    示例

    nim.updateLocalSession({
    id: 'p2p-user1',
    localCustom: '{"pinned": true}',
    needNotify: true,
    done: function(err, session) {
    if (err) {
    console.log('更新本地会话失败', err)
    } else {
    console.log('更新本地会话成功', session)
    }
    }
    })

    Parameters

    • options: { id: string; localCustom?: string; needNotify?: boolean; done?: any }

      入参

    Returns void

  • updateSessionsWithMoreRoaming(options: { msg: NIMMessage; done?: any }): void
  • updateStickTopSession(options: { id: string; topCustom?: string; done: any }): void