ActionCable 频道实例是不是在客户端之间共享?
Posted
技术标签:
【中文标题】ActionCable 频道实例是不是在客户端之间共享?【英文标题】:Are ActionCable Channels instances shared across clients?ActionCable 频道实例是否在客户端之间共享? 【发布时间】:2017-02-18 17:16:43 【问题描述】:我通过公共 IP 地址识别连接。直到最近我的理解(怀疑)是在这种情况下,客户订阅频道将重用相同的频道实例。
一个真实的例子如下:
我正在构建一个应用程序,该应用程序从不属于我的某个来源请求信息。这是通过 HTTP 请求和 Job 完成的。外部资源以周期性的时间间隔变化。
继承自 ApplicationCable::Channel 的 DataChannel 类管理最后一个请求的缓存,因此从同一 IP 地址订阅的新客户端不会启动新请求,而是重用最后一个请求。
总结:
如果我打开两个选项卡并且每个选项卡都订阅一个频道,即使连接标识符相同,我是否会获得两个 Channel 实例?
我不是在寻找一种方法来做到这一点,只是为我指明正确的方向就足够了,而且实际上更有价值。
【问题讨论】:
好像不是,因为我在开发环境,我会在生产环境中测试。根据我想做的,我最终使用了 Redis DLM。 【参考方案1】:不,他们不是。
我需要在客户端拥有的所有实例之间添加一些同步,连接用 IP 地址标识。
为此,我使用了 Redis DLM,因此我可以获取和释放锁,从而执行旨在唯一的计算。
可能有更好的方法来做到这一点,但我无法想象不需要修补 ActionCable 源的方法。一如既往地感谢任何进一步的评论。
【讨论】:
以上是关于ActionCable 频道实例是不是在客户端之间共享?的主要内容,如果未能解决你的问题,请参考以下文章