如何在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中顺序发布消息?的主要内容,如果未能解决你的问题,请参考以下文章

在flutter中使用pubnub,如何发起聊天?

获取聊天记录中的消息以显示在 Messenger Pubnub 中

从 PubNub 获取未读消息并呈现通知

Angular 10 + PubNub - 从特定频道读取消息时出现问题

按消息文本的 Pubnub 搜索频道

如何生成 pubnub UUID?