Tinode即时通讯系统中的theCard数据格式详解

Tinode即时通讯系统中的theCard数据格式详解

chat Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots chat 项目地址: https://gitcode.com/gh_mirrors/ch/chat

什么是theCard

在Tinode即时通讯系统中,theCard是一种用于存储和传输人员及话题描述信息的结构化数据格式。它类似于传统通讯录中的联系人卡片,但专门为即时通讯场景进行了优化设计。

格式演变历史

theCard最初被称为vCard,这与RFC 6350定义的vCard标准名称相同但格式不兼容,这在实际使用中造成了一些混淆。为了解决这个问题,Tinode团队将其重命名为theCard。需要注意的是,在代码和文档中可能仍然会看到vCard或vCard的引用,除非特别说明,这些都应该理解为theCard格式。

JSON表示形式

当使用JSON来表示theCard数据时,它与jCard(RFC 7095)标准不同,两者不兼容。主要区别在于:

  1. theCard使用对象来表示逻辑相关的数据
  2. jCard使用有序数组结构

这种设计使得theCard更易于理解和处理,特别是在即时通讯这种需要快速解析的场景中。

数据结构详解

theCard是一个包含多个可选字段的对象,以下是各字段的详细说明:

基本字段

  1. fn (Formatted Name)

    • 类型:字符串
    • 说明:人员或话题的格式化名称
    • 示例:"张三"
  2. photo (头像照片)

    • 类型:对象
    • 要求:必须包含dataref字段之一
    • 子字段:
      • type:图片类型(省略了"image/"前缀的MIME类型)
      • data:Base64编码的二进制图片数据
      • ref:图片的URL地址
      • width:图片宽度(像素)
      • height:图片高度(像素)
      • size:图片大小(字节)
  3. note (备注)

    • 类型:字符串
    • 说明:对人员或话题的描述信息

扩展字段(当前客户端未实现)

  1. n (结构化名称)

    • 子字段:
      • surname:姓氏
      • given:名字
      • additional:附加名(如中间名)
      • prefix:前缀(如头衔)
      • suffix:后缀(如"Jr")
  2. org (组织信息)

    • 子字段:
      • fn:组织名称
      • title:职位头衔
  3. tel (电话号码列表)

    • 类型:对象数组
    • 每个对象包含:
      • type:联系方式类型(如"HOME")
      • uri:电话号码URI
  4. email (电子邮件列表)

    • 类型:对象数组
    • 每个对象包含:
      • type:邮件类型(如"WORK")
      • uri:邮件地址
  5. comm (其他联系方式)

    • 类型:对象数组
    • 每个对象包含:
      • type:联系类型
      • name:联系方式名称
      • uri:特定于联系类型的URI
  6. bday (生日)

    • 子字段:
      • y:年份
      • m:月份(1-12)
      • d:日期(1-31)

实际应用情况

目前Tinode客户端主要使用fnphoto这两个基本字段。其他字段虽然已定义但尚未被任何已知客户端实现。这种设计为未来功能扩展预留了空间,如果需要,可以从对应的vCard标准字段中采用更多属性。

技术实现建议

  1. 在处理theCard数据时,应该始终将其视为可选字段的集合,不要假设任何字段必然存在。

  2. 对于照片数据,优先检查ref字段(外部引用),如果没有再处理data字段(内联数据)。

  3. 考虑到未来兼容性,实现时应保留未知字段而不是丢弃它们。

  4. 在用户界面展示时,可以根据可用字段灵活组合显示信息,例如优先显示fn,然后是note等。

theCard格式的设计体现了Tinode系统在数据结构和扩展性方面的深思熟虑,既满足了当前即时通讯的基本需求,又为未来的功能演进预留了充足的空间。

chat Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots chat 项目地址: https://gitcode.com/gh_mirrors/ch/chat

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

资源下载链接为: https://pan.quark.cn/s/6b3e936ec683 在英语学习过程中,一款优秀的词典工具至关重要。Vocabulary.com Dictionary 和欧陆词典(EuroDict)作为两款备受推崇的在线词汇资源,各具特色且能够相互补充,为用户打造全面的词汇学习体验。 Vocabulary.com Dictionary 不仅提供单词的标准释义,还特别注重词汇的实际运用。它涵盖了丰富的例句、短语和习语,帮助用户掌握词汇在不同语境中的使用方式。此外,Vocabulary.com 设有互动学习功能,通过游戏和挑战的形式,让学习者在趣味中巩固新词汇。其“智能学习计划”能够根据用户的学习进度和能力定制个性化学习路径,是提升词汇量的有效工具。 与之配合的欧陆词典则以多语言支持和深度词汇解析闻名。它不仅提供英文词汇的解释,还涵盖多种语言对照,非常适合多语种学习者。欧陆词典还提供同义词、反义词、派生词等扩展信息,以及丰富的短语和习语,帮助用户全面理解词汇的多维度含义。 在实际使用时,学习者可以先通过 Vocabulary.com Dictionary 查找单词的基本信息和应用场景,再借助欧陆词典拓展对词汇的多语言理解,尤其是对比不同语言中词汇的对应关系。Vocabulary.com 的互动学习模式适合日常学习,而欧陆词典则更适合深度研究和词汇拓展。 压缩包中的文件可能包括“Vocabulary.com Dictionary.jpg”,这可能是词典的截图或封面,用于视觉介绍;“Vocabulary.com Dictionary.mdd”和“.mdx”文件则是欧陆词典的数据文件,用于存储索引和数据,方便离线查询。将这些文件下载到本地,即使在无网络的情况下,也能使用部分功能。 Vocabulary.com Dictionary 和欧陆词典的结合使用,能为学习者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

甄如冰Lea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值