pubnub - pubnub 上的线程消息传递
问题描述
我们想在 Pubnub 的聊天频道中为消息创建线程。例如,某人可以通过“创建线程”并开始聊天来响应频道中的特定消息。是否有规定的方法来模拟这种行为?如果是这样,您能否参考文档?
这是你在 slack 中看到的行为,供参考。
解决方案
没有针对线程消息传递的现成解决方案。但是,可以通过使用元数据标记它们(使用 PN 对象和/或 MessageActions),然后在您的端进行一些编码来维护和处理它们的关系,从而在消息之间建立层次关系。
您可以使用线程第一条消息的时间标记作为键,根据它对消息进行分组,并使用消息自己的时间标记生成 UI 的顺序。
https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#methods
这是执行此操作的高级设计:
- 一条消息发布到具有名称的频道
chat_11223344
(频道名称chat_
用作所有聊天频道的前缀和生成的 id - 在此处保持简短,但您可以为此使用 uuid 生成器)。该发布返回一个发布时间令牌,如下所示:16183330926487763
。 - 使用PN Objects,您可以设置频道的显示名称和描述。
- 在您的聊天 UI 中,您允许一个人在该消息上创建一个线程。消息被发布到名为 的通道
chat_11223344.16183330926487763
,使用顶级消息的发布时间标记作为“子通道”名称。 - 因此,您可以轻松识别线程化的顶级消息,您可以在发布第一个“线程化”消息时向该消息添加MessageAction 。您可能还想添加自定义通道元数据(同样是 PN 对象)以添加
"isThreaded":true
键/值。
推荐阅读
- reference - UE4:我如何检测蓝图中的演员参考是否已被破坏?
- css - React CSS Modules:有什么理由不将所有 CSS 提取到静态文件中?
- cytoscape.js - 如何使用 cytoscape 在一个节点(不是渐变)上绘制多种颜色?谢谢
- r - 在 tmap 中指定大小图例的填充颜色
- android - Android设备上的Axios帖子给我网络错误
- javascript - 用 Sequalize 重命名 belongsToMany 关联
- python - 如何检查文件是否存在并在文件丢失时创建一个,而文件的路径不完整,如下所示
- azure - 使用 ARM 订阅级别部署部署多个资源时出现问题
- python - 我们可以在 OAuth2Session 过期前 x 秒刷新令牌吗?
- microsoft-graph-api - 使用图形 API 来自组 azure AD 的用户/成员计数