在Rails ActionCable中"无法找到带标识符的订阅"的原因是什么?

Tom*_*ski 5 ruby ruby-on-rails redis actioncable

我正在使用Rails 5.0.0.rc1 + ActionCable + Redis构建一个messenger应用程序.

我有单一频道ApiChannel和一些行动.有一些"单播"动作 - >要求某些东西,取回某些东西,以及"广播"动作 - >做某事,将有效载荷广播到某些连接的客户端.

我不时会RuntimeError从这里得到例外:https ://github.com/rails/rails/blob/master/actioncable/lib/action_cable/connection/subscriptions.rb#L70Unable to find subscription with identifier (...).

这可能是什么原因?在什么情况下我可以得到这样的例外?我花了很多时间来调查这个问题(并将继续这样做),任何提示都将不胜感激!

Tom*_*ski 1

看起来与此问题有关:https://github.com/rails/rails/issues/25381

当 Rails 回复订阅已创建但实际上尚未完成时,会出现某种竞争条件。

作为临时解决方案,在建立订阅后添加一个小的超时解决了该问题。

不过,还需要进行更多调查。