我计划使用 SSE 更新显示 Stripe 订阅详细信息的页面。
基本上它是这样的:
- 加载订阅详情页面
- 使用 ActiveJob 作业从 Stripe API 请求订阅详细信息
- 任务完成后,使用 SSE 通知该客户端(订阅页面)将对页面进行更新
- 通过 javascript 执行更新
我有步骤 1、2 和 4 的代码设置,但是,我不知道如何执行 #3。
我看到的问题之一是 ActiveJob 确实有一个 after_perform 回调,但是 Rails 中内置的 SSE 驻留在控制器上(ActionController::Live::SSE)。我不知道如何在 after_perform 回调的 SSE 控制器中执行某些操作。
谷歌搜索,我发现了一个潜在的解决方案:
- 使用 Sidekiq 插件可以判断任务何时完成。
- 使用 PostgreSQL 通知/监听
我不知道之后会发生什么,比如 SSE 控制器如何知道任务已执行。
其他注意事项:
我正在使用 Brandon Hilkert 的 Sucker Punch gem 进行后台处理:https ://github.com/brandonhilkert/sucker_punch
我还想要一个不会强迫我坚持使用 PostgreSQL 专有代码的解决方案。但是,我不介意这是否是唯一可行的方法。
我还发布了一个 Sidekiq 解决方案,以防我无法使用 Sucker_punch 做到这一点而不得不切换到 Sidekiq。
有任何想法吗?
谢谢!