腾讯TIM实现即时通信 v3+ts实践

目录

初始化sdk

功能描述

初始化

准备 SDKAppID

调用初始化接口

 监听事件

发送消息

创建消息

创建文本消息

登录登出

功能描述

登录

登出

销毁

登录设置

获取会话列表

功能描述

获取会话列表

获取全量的会话列表

 历史消息

功能描述

拉取消息列表

分页拉取指定会话的消息列表

根据指定的消息 sequence 或消息时间跳拉会话的消息列表

 接收消息

功能描述

监听事件

取消监听事件

 总结


初始化sdk

功能描述

在使用 IM SDK 的各项功能前,必须先进行初始化。

初始化

初始化 SDK 需要操作以下步骤:

  1. 准备 SDKAppID。
  2. 调用 TIM.create 初始化 SDK。
  3. 添加 SDK 事件监听器。

下面我们将分步骤依次为您详细讲解。

准备 SDKAppID

您必须拥有正确的 SDKAppID,才能进行初始化。
SDKAppID 是腾讯云 IM 服务区分客户帐号的唯一标识。我们建议每一个独立的 App 都申请一个新的 SDKAppID。不同 SDKAppID 之间的消息是天然隔离的,不能互通。
您可以在 即时通信 IM 控制台 查看所有的 SDKAppID,单击 创建新应用,可以创建新的 SDKAppID。

调用初始化接口

操作完上述步骤后,您可以调用 TIM.create 初始化 SDK。

接口

TIM.create(options);

参数 options 为 Object 类型,包含的属性值如下:

Name Type Description
SDKAppID Number 即时通信 IM 应用的 SDKAppID
        public tim: ChatSDK | undefined
        private initTimSdk(SDKAppID: number) {
        let options = {
            SDKAppID,// 接入时需要将0替换为您的即时通信 IM 应用的 SDKAppID
        };
        // 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
        let tim = TIM.create(options); // SDK 实例通常用 tim 表示

        // 设置 SDK 日志输出级别,详细分级请参见 setLogLevel https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#setLogLevel 接口的说明</a>
        tim.setLogLevel(0); // 普通级别,日志量较多,接入时建议使用
        // tim.setLogLevel(1); // release 级别,SDK 输出关键信息,生产环境时建议使用

        // 注册腾讯云即时通信 IM 上传插件
        tim.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin })
        this.tim = tim
    
    }

 监听事件

SDK 进入 ready 状态时触发,接入侧监听此事件,然后可调用 SDK 发送消息等 API,使用 SDK 的各项功能


    // 监听sdk准备完成的事件
    private bindTIMEvent() {
        this.tim?.on(TIM.EVENT.SDK_READY, this.handleSDKReady, this)
    }

  SDK 收到推送的单聊、群聊、群提示、群系统通知的新消息,接入侧可通过遍历 event.data 获取消息列表数据并渲染到页面

    private handleSDKReady = () => {
        console.log('sdk准备完成');
        this.onReady()

        console.log('执行');

        this.tim?.on(TIM.EVENT.MESSAGE_RECEIVED, this.handleMessageReceived, this)

    }
    private handleMessageReceived = (event: TextMessageEvent) => {
        console.log('接收到消息', event);
        this.messageReceived(event)

    }
    public messageReceived = (event: TextMessageEvent) => { }

发送消息

创建消息

创建文本消息

创建文本消息的接口,此接口返回一个消息实例,可以在需要发送文本消息时调用 发送消息 接口发送消息实例。

接口

tim.createTextMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

Name Type Default Description
to String - 消息接收方的 userID 或 groupID
conversationType String - 会话类型,取值TIM.TYPES.CONV_C2C(端到端会话)或TIM.TYPES.CONV_GROUP(群组会话)
priority String TIM.TYPES.MSG_PRIORITY_NORMAL 消息优先级
payload Object - 消息内容的容器
cloudCustomData String '' 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)

payload 的描述如下:

Name Type Description
text String 消息文本内容

返回值

消息实例 Message

示例

        private getMessageOptions = (userID: string, payload: ITextPayload) => {
            return this.tim?.createTextMessage({
            to: userID,
            conversationType: TIM.TYPES.CONV_C2C,
            // 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://cloud.tencent.com/document/product/269/3663#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
            // 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
            // priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
            payload,
            // v2.20.0起支持C2C消息已读回执功能,如果您发消息需要已读回执,需购买旗舰版套餐,并且创建消息时将 needReadReceipt 设置为 true
            needReadReceipt: true
            // 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到,v2.10.2起支持)
            // cloudCustomData: 'your cloud custom data'
        })
    }

       public sendMessage = async (userID: string, payload: ITextPayload) => {
        // 创建消息
        const messOption = this.getMessageOptions(userID, payload)
        await this.tim?.sendMessage(messOption!)
        console.log('发送成功');

    }
    public sendMessage = async (userID: string, payload: ITextPayload) => {
        // 创建消息
        const messOption = this.getMessageOptions(userID, payload)
        await this.tim?.sendMessage(messOption!)
        console.log('发送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端 贾公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值