我正在使用Rails 5.0.0.rc1 + ActionCable + Redis构建Messenger应用程序。
我有一个频道ApiChannel,其中有很多动作。有一些“单播”操作->索要某些东西,取回一些东西,然后进行“广播”操作->做某事,将有效负载广播到某些连接的客户端。
ApiChannel
我不时RuntimeError从这里得到异常:https : //github.com/rails/rails/blob/master/actioncable/lib/action_cable/connection/subscriptions.rb#L70Unable to find subscription with identifier (...)。
RuntimeError
Unable to find subscription with identifier (...)
这可能是什么原因?在什么情况下可以得到这种例外?我花了很多时间调查这个问题(并将继续这样做),任何提示将不胜感激!
似乎与此问题有关:https : //github.com/rails/rails/issues/25381
Rails答复订阅时已经创建了某种竞争条件,但实际上尚未完成。
作为临时解决方案,在建立订阅后添加了一个较小的超时已解决了该问题。
不过,还需要做更多的调查。