SSE を使用して、Stripe サブスクリプションの詳細を表示するページを更新する予定です。
基本的には次のようになります。
- サブスクリプションの詳細ページを読み込む
- ActiveJob ジョブを使用して、Stripe API からサブスクリプションの詳細をリクエストします
- タスクが終了したら、SSE を使用して、そのクライアント (サブスクリプション ページ) にページを更新することを通知します。
- JavaScriptを介して更新を実行します
ステップ 1 と 2 と 4 のコードをセットアップしましたが、#3 の実行方法がわかりません。
私が目にする問題の 1 つは、ActiveJob には実際に after_perform コールバックがありますが、Rails に組み込まれた SSE はコントローラー (ActionController::Live::SSE) に存在することです。after_perform コールバックで SSE コントローラーで何かを行う方法がわかりません。
グーグル、私は潜在的な解決策を見つけました:
- Sidekiq プラグインを使用して、タスクの完了を通知できるようにします。
- PostgreSQL NOTIFY / LISTEN を使用する
SSEコントローラーがタスクが実行されたことをどのように知るかなど、その後どうなるかはわかりません。
その他の注意事項:
バックグラウンド処理に Brandon Hilkert の Sucker Punch gem を使用しています: https://github.com/brandonhilkert/sucker_punch
また、PostgreSQL 専用のコードに固執することを強制しないソリューションも必要です。ただし、それが機能する唯一のアプローチであるかどうかは気にしません。
また、sucker_punch で実行できず、Sidekiq に切り替える必要がある場合に備えて、Sidekiq ソリューションも投稿しました。
何か案は?
ありがとう!