tim实践系列——消息撤回,阅后即焚 等功能如何开发

2024-03-15 22:30

本文主要是介绍tim实践系列——消息撤回,阅后即焚 等功能如何开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

消息撤回与阅后即焚是tim的两个核心接口,tim的数据传输核心接口有  消息接口,消息撤回,阅后即焚,流数据接口,另外几个核心接口在 《tim使用文档》 有详细说明
订阅
《tim实践系列文章》 随时查阅

常规消息接口也就是通常定义的聊天消息

注意:消息撤回接口必须由 消息发起方调用才有效,否则tim服务器返回权限错误。消息撤回可用于 用户到用户的消息撤回,也可以用于用户到群消息的撤回.

java客户端demo 程序示例:

tc.RevokeMessage(123L,"10001", null,  null, (short) 0, (short) 0);  //用户到用户的消息撤回
//撤销 消息id 为123 的消息,
//10001 为消息的接收方tc.RevokeMessage(123L,null, "100000001",  null, (short) 0, (short) 0);   //用户到群的消息撤回
//撤销 消息id 为123 的群消息
//100000001 为群账户

注意,阅后即焚接口必须由 消息接收方调用才有效,阅后即焚可用于 用户到用户的消息阅后即焚,群消息没有阅后即焚接口

tc.BurnMessage(123L, "10001",   null, (short) 0, (short) 0);
//对消息id 为123 的消息阅后即焚,
//10001 为消息的发起方


调用 消息撤回或消息阅后即焚接口后,tim服务器会返回TiimAck给调用者,并发送TimMssage给消息的相关账号,终端通过ackHanlder与messageHandler处理数据结果,如webtim中处理:

 ackHandler:......case STAT.TIMREVOKEMESSAGE:console.log("撤回消息返回", ta)if (ta.ok) {let tonode = ta.n;let t = ta.t;let mid = ta.ackInt;let cid = 0;if (t == 2) {cid = chatid(myAccount, tonode);let m = midMap.get(cid + "_" + mid);if (!isEmpty(m)) {m.isRevoke = true;}} else if (t == 3) {cid = chatid(tonode, tonode);let m = midMap.get(cid + "_" + mid);if (!isEmpty(m)) {m.isRevoke = true;}}if (document.getElementById("accountId").value == tonode) {showchat(cid)}}break;case STAT.TIMBURNMESSAGE:console.log("阅后即焚返回", ta)......

  messageHandler:......case 2: //撤回消息console.log("revokeMessage>>>", tm);let cid = 0;let node = "";if (tm.msType == 2) {node = tm.fromTid.nodecid = chatid(node, tm.toTid.node);} else if (tm.msType == 3) {node = tm.roomTid.node;cid = chatid(node, node);}let m = midMap.get(cid + "_" + tm.mid);if (!isEmpty(m)) {m.isRevoke = true;}if (document.getElementById("accountId").value == node) {showchat(cid)}break;.......

撤回消息与阅后即焚接口是没有时间限制的。在实际业务中,可以根据实际需要,加上撤回的时间限制。而阅后即焚,可以通过一般信息阅读时间,如8秒或10秒等,在消息显示后,调用阅后即焚接口。


有任何问题或建议请Email:donnie4w@gmail.com或 https://tlnet.top/contact  发信给我,谢谢!

这篇关于tim实践系列——消息撤回,阅后即焚 等功能如何开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813453

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche