ActionCable Channels实例是否在客户端之间共享?

时间:2017-02-18 17:16:43

标签: ruby-on-rails actioncable

我通过公共IP地址识别连接。我的理解直到最近(怀疑它)是在这种情况下,客户订阅频道会重用相同的频道实例。

现实世界的例子如下:

我正在构建一个应用程序,该应用程序请求来自某个非我拥有的来源的信息。这是通过HTTP请求和作业完成的。外部资源以周期性的时间间隔发生变化。

我的DataChannel类继承自ApplicationCable :: Channel,管理上一个请求的缓存,因此从同一IP地址订阅的新客户端不会启动新请求,而是重用最后一个请求。

总结:

如果我打开两个标签并且每个标签订阅一个频道,即使连接标识符相同,我也会获得两个频道实例吗?

我没有寻求这样做的方法,只是指出我正确的方向就足够了,实际上更有价值。

1 个答案:

答案 0 :(得分:0)

不,他们不是。

我需要在客户端拥有的所有实例之间添加一些同步,并使用IP地址标识连接。

为此,我使用了Redis DLM,因此我可以获取并释放锁,从而执行旨在独特的计算。

可能有更好的方法,但我无法想象一个不需要修补ActionCable来源的方法。任何进一步的评论都会一如既往地受到赞赏。