理解 message bus 中的 client_id

你好 :wave:

我最近尝试深入研究代码库,以找出 /message-bus/{client-id}/poll 端点中的客户端 ID。有人能提供一些指导,或者指引我到相关的代码或文档,解释这个客户端 ID 究竟代表什么以及它是如何设置的吗?

提前感谢你的帮助!

1 个赞

我可能错了,但 clientId 可能会用来识别 MessageBus 应将 X 消息传递给谁。

可以将其想象成一次对话,每隔 X 时间,客户端会问服务器 “嘿,我的 ID 是 XYZ,您有我的消息吗?”

客户端 ID 似乎是在每次加载脚本时自动生成的(我不知道在 Discourse 的情况下,这个生成的 clientId 是否会以某种方式保留在客户端)。

1 个赞

您是想使用还是理解 message-bus

如果是前者,也许可以描述一下您想观看的内容以及您正在做的、但不起作用的事情。我所做的是在 GitHub - discourse/all-the-plugins 中通过 grep 查找 MessageBus 插件。

3 个赞

为了提供更多背景信息,我们在 discourse 主机上观察到大量的消息总线轮询调用。想检查一下客户端 ID 和当前用户之间是否存在任何关联。如果存在这种联系,将有助于我们识别模式并定义有效的速率限制规则来管理流量。

我大部分都不明白,但你可以查看浏览器开发者工具,看到每个打开的窗口都在定期轮询消息总线。这就是页面不重新加载就能发生事情的方式,比如看到帖子被编辑、消息计数更新等等。预计会发生很多这种情况。看起来它正在轮询一个随机数,所以你(至少我)无法(轻易地)判断它是哪个用户。

是的——大量的 message-bus poll 调用代表了很多并发用户,其中每个唯一的 client-id 都代表一个浏览器会话。

不——这是必要的流量,是您的论坛运行所必需的。如果看到很多,这也是成功的标志! :+1:

3 个赞