如何在pubnub中顺序发布消息?
Posted
技术标签:
【中文标题】如何在pubnub中顺序发布消息?【英文标题】:How to sequentially publish messages in pubnub? 【发布时间】:2021-08-22 12:45:57 【问题描述】:所以问题是如何在 pubnub 中按顺序发送消息。
示例:我添加了文字和 2 张图片。流程应该像 => 将文本作为第一条消息发送,将第一张图片作为第二条消息发送,将第二张图片作为第三条消息发送。它们应该会一一出现在 pubnub 历史中。
假设我在 sendArray 变量中拥有所有这些东西
(async () =>
for await (const item of sendArray)
pubnub.publish(
channel: currentChannel,
message: item,
)
)();
我已经尝试过类似的方法,但它不起作用。
【问题讨论】:
【参考方案1】:这几乎是正确的,只是 await
关键字的位置错误。
(async () =>
for (const item of sendArray)
await pubnub.publish(
channel: currentChannel,
message: item,
)
)();
这是因为发布方法是一个需要等待的异步操作。 for await
是一种用于迭代异步可迭代对象的特殊构造,因此此处无需使用它。 For 循环尊重 async 块中的 await 关键字。
【讨论】:
要明确一点,只是因为您在“消息 2”之前同步发布“消息 1”,所以不能绝对保证它们按该顺序到达客户端订阅者,因为 PubNub 网络不是有状态的从一个发布到下一个发布(甚至来自同一个发布者),并且必然是异步的。但是,消息很有可能按照发送的顺序到达。它应该接近 0 表示您收到来自同一发布者的乱序消息,除非发布率很高且持续很长时间并异步发送。以上是关于如何在pubnub中顺序发布消息?的主要内容,如果未能解决你的问题,请参考以下文章
获取聊天记录中的消息以显示在 Messenger Pubnub 中