【自问自答】Web IM 消息如何设计消息的结构呢?
如何设计消息的结构,可以满足我们后续的扩展。并且保证之前老版本显示正常。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回答:
我介绍一下消息的数据结构设计吧。如下,可以看到一共四条消息,两种消息类型(文本、图片),那我们这个数据应该如何描述呢?
{ 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