问题描述
TL;DR:Rails-server 重启在 Action Cable 中没有正常处理,导致状态损坏。如何解决?
我运行一个使用 Action Cable 的 Rails 服务器。
当我更改文件时,服务器会按预期重新启动。但它并没有完全优雅地重新启动。
Action Cable 连接在已建立的套接字中记录 {"type":"disconnect","reason":"server_restart","reconnect":true}
。然后套接字似乎被切断,我的频道的 unsubscribed
方法没有运行。然而,在重新连接时,subscribed
方法确实运行——它应该运行,但现在我们有一个不对称。像跟踪连接的客户端数量这样简单的事情已经变得不可靠了,因为在服务器重新启动后,这个数字现在会翻倍,尽管真实数字保持不变。这是因为当调用 subscribed
时它会增加计数,但减少计数器发生在 unsubscribed
中,它不会在服务器重新启动时调用。
如果这仅发生在开发中,这不会是一个大问题,但在生产中也会发生在由部署引起的服务器重启期间。
如何让 Rails 优雅地重启服务器,我的意思是它也应该在我的频道中运行 unsubscribed
方法,而不是仅仅切断连接?
编辑:我还向 Rails 提交了一个问题:https://github.com/rails/rails/issues/41005
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)