【自问自答】Web IM 消息如何设计消息的结构呢?

如何设计消息的结构,可以满足我们后续的扩展。并且保证之前老版本显示正常。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。


回答:

我介绍一下消息的数据结构设计吧。如下,可以看到一共四条消息,两种消息类型(文本、图片),那我们这个数据应该如何描述呢?

【自问自答】Web IM 消息如何设计消息的结构呢?

{

sendUserId: 'lilnong.top',

receiverUserId: 'QAQ',

msgType: '1', // 数据类型:消息可以包含不同类型的数据,如文本、图片、视频、红包等。这里可以服务端设计一个枚举类型就完事。

msgText: '[不支持的消息类型]', // 纯文本消息,这里在会话列表中显示

msgText: '[图片]', // 也可以在推送中显示给用户看

msgText: 'chatgpt 是不是再骗我', // 所以也可以当做是不支持时的降级文本

msgExt: { // 这里就是用来描述数据的,和 msgType 一一对应,如图片就是描述图片的。

"url": "https://a.b.c/d.jpg",

"width": "1024",

"height": "2",

},

sendTime: 11111111111,// 发送时间

msgId: 11111, //用来标识当前消息,这个是在服务端做过去重的,客户端用来当唯一键构建自己的uuid

md5: 'xxxx', // 可以增加一下安全性校验,不用也无所谓。

}

可以看到,我们所有的版本都是可以显示 msgText 的。如果判断 msgType 是支持的,那么就可以通过 json 自己选择渲染方式了。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

以上是 【自问自答】Web IM 消息如何设计消息的结构呢? 的全部内容, 来源链接: utcz.com/p/933853.html

回到顶部