来自 React 应用程序的长轮询消息总线通知

大家好,

我目前正在为无头 Discourse 服务器构建一个 React 前端。

我正在实现通知计数功能,类似于此处用户头像上方的显示。我希望通过 Discourse 的 message_bus 使用长轮询来近乎实时地更新该计数。

我看过 message-bus.js 文件,但它非常冗长,且对于现代应用来说已过时。我们本应将其作为 React 应用的一部分来处理,而不想引入 jQuery 和全局对象。

另外,我在 /initializers/subscribe-user-notifications.js.es6 中看到我们订阅了 /notification/userid,但我找不到关于可订阅频道及其响应格式的文档。

我正在寻求关于在现代 JavaScript 应用中订阅 message bus 的最佳实践方法的帮助。

谢谢!:+1:

2 个赞

Discourse 确实是一个现代 JavaScript 应用 :stuck_out_tongue:

最好的方法是使用 message-bus 库。目前它依赖于 JQuery,但如果您想提交拉取请求以移除该依赖,我相信这会被考虑。

Messagebus 仅设计用于 Discourse 内部,它并非真正的“公共”API。最好的信息来源是代码库中的 JavaScript 文件,您已经找到了它们 :+1:

小更正一下 :slight_smile:

MessageBus 会首先尝试使用 jQuery,如果失败则回退到包含在 message-bus-ajax.js 文件中的原生 XMLHttpRequest 版本。要使用 message-bus-ajax.js,必须在加载 message-bus.js 之后加载它。你也可以通过提供一个实现其他 Ajax 请求方式的函数来覆盖此选项。

3 个赞

感谢 @david@sam,我并非意在暗示 Discourse 不是现代应用——它显然是。我最初看到的是 message-bus.js,因此不确定这是否真的是最佳实践。既然它能正常工作,那就没问题了。

谢谢!

3 个赞

Discourse 核心使用的是完全相同的文件,这确实是正确的文件 ™

1 个赞