PubNub:仅当给定键和事件不存在其他事件处理程序时,才能添加顶级通配符

PubNub: Top level wildcard can be added only if no other event handlers exist for given key and event

我有两种动态频道ID:

  1. private.x(其中 x 是整数)
  2. public.x(其中 x 是整数)

我正在尝试创建两个 PubNub After-Publish-Or-Fire 函数:

  1. Bot:使用通配符:private.*(函数调用 api 在我的服务器上并获得机器人回复以发布)。
  2. Log:用于使用通配符记录所有消息:*(对我服务器上的 api 的函数调用带有消息并将其保存到我的数据库)。

问题是PubNub好像不能在同一个频道支持两个功能。和事件类型

我的问题:

  1. 我不希望日志功能仅记录 public.* 频道,并且 Bot 功能将在 private.* 频道上同时执行 Bot 和 Log 操作。有没有其他方法可以绕过这个限制?
  2. Before-Publish-Or-FireAfter-Publish-Or-Fire 事件都异步吗? (也许我可以将 Before-Publish-Or-Fire 用于日志功能,将 After-Publish-Or-Fire 用于 Bot)?

只有当给定键和事件不存在其他事件处理程序时,才能添加 PubNub 通配符

您想在两个事件处理程序中重用代码。您提供了自己的答案。在您的原始问题中,您的回答是一种可接受的方法。我们还提供了一种您可以考虑解决此问题的额外方法。

  • public.* 个频道上记录操作。
  • private.* 频道上的机器人和日志操作。

您可以创建一个 log 频道,它会被火灾调用。在 public.*private.* 函数中,您将触发调用 log 通道事件处理程序的火灾。这样您就可以为您的日志记录机制共享代码重用。

异步与同步事件

Question: Are both Before-Publish-Or-Fire and After-Publish-Or-Fire events async?

Answer: No. Only on-after events are async.

考虑这一点的一种自然方式是任何需要发生的事情 before 都必须是阻塞的并且 non-async。否则不能happen before, and may end up happening after.

活动前后

Question: Can you use the Before-Publish-Or-Fire for the BOT function and After-Publish-Or-Fire for Logging)?

Answer: Yes! This is a great way to do it.