memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

ActionController::Liveを動かす手順(※個人メモです)

やりたいこと

授業でも扱っているRailsで以下のWebアプリを開発しています。以下の機能までとりあえず実装して使ってみて、学生が教員にヘルプを求めたり、教員が助言したら学生に知らせたり、要はプッシュ通知する仕組みが欲しいな。。。と感じたのでした。

デバッグ支援ツールがちゃんと動いてプチ感動 - memorandums

プッシュ通知する方法はいくつか選択肢がありました。一番簡単そうなのはOneSignalというサービスを利用するものでしたが、一斉通知するだけで細かい制御ができるかよくわかりませんでした。

次に見つけたのがActionController::Liveというものでした。正確には、Action Cableの方が先に見つかってこれは以前から知ってはいたのですが実装の説明を読むと難しそうで。。。できれば避けたいな。。。という感じでした。

やったこと

で、ActionController::Liveです。こちらは簡単に実装できました。使っているRailsば5.2なのでちょっと古い記事を参照することになりまして。。。こちらもかなり古い記事ですが動作しました。

ActionController::Live | TECHSCORE(テックスコア)

ただ、実装してみるとなぜか連続して送ったデータのうち最後のデータしか表示されませんでした。それを何とかするのが以下の記事でした。これを残しておきたくてこれを書いています。

medium.com

ポイントは「response.headers['Last-Modified'] = Time.now.httpdate」をつけるでした。

ただ。。。この機能はクライアントからのリクエストから始まる必要があり、サーバからのレスポンスが非同期(AJAX)になるというだけなんですね。。。なのでサーバーのタイミングでクライアントに通知を送信することはできない技術(のよう、できたらごめんなさい)でした。。。

とりあえず試行ログということで。