融合存储方案

更新时间: 2024/03/14 18:45:32

云信 IM Web SDK 默认使用 NOS 做文件存储。若开发者服务的对象是在海外,那么可以通过 SDK 来选择 AWS S3 做文件存储。

融合存储使用:

使用融合存储需要依赖 s3 的 SDK 文件,为了减小云信 Web IM SDK 体积所以需要用户在自己的项目中引入 AWS S3 SDK 并在初始化IM时注入

jsimport s3 from 'aws-sdk/clients/s3'

nim.getInstance({
  ...,
  providers:{
    s3
  }
})

否则无法开启融合存储功能

发送文件:

发送文件时使用哪种存储方式由服务器下发的策略和发送文件时的参数决定

使用 sendFile 接口时需要加上参数 "commonUpload": true 开启融合存储功能

并且当前服务器下发策略为S3优先则使用S3存储,否则一律使用NOS存储

接收文件消息:

如果配置不需要下载鉴权,则可直接使用收到文件消息中的文件地址

如果开启下载鉴权,则需要对接收到的文件地址进行以下处理:

首先通过调用

jsnim.protocol.getFileAuthToken({
  type: 2,
  done: (data) => console.log(data)
}) 

获取 token,ttl 时间

根据获取到的获取token,ttl时间在文件地址后加上

`?nim-mixstore-ctoken=nim-mixstore-ctoken=${token}&appKey=${appKey}&uid=${account}`

即可访问文件

getFileAuthToken

该方法有以下两个参数

type :2 表示带过期时间的全局 token 鉴权,3 表示文件级别的url鉴权

urls : 当 type=3 是 url 鉴权,需要传 url 数组

getFileAuthToken 返回值除了 token 还有 ttl,该值为 token 过期时间 单位为秒 需要用户根据 ttl 自己管理 token

此文档是否对你有帮助?
有帮助
去反馈
  • 融合存储使用:
  • 发送文件:
  • 接收文件消息:
  • getFileAuthToken