Railsで簡単なチャットアプリを作る想定で質問です。
以下のようにしてFEから speak
を実行させるのと、
ruby
1class RoomChannel < ApplicationCable::Channel 2 def subscribed 3 stream_from 'room_channel' 4 end 5 6 def unsubscribed 7 # Any cleanup needed when channel is unsubscribed 8 end 9 10 def speak(data) 11 Message.create!(body: data['message']) 12 ActionCable.server.broadcast 'room_channel', body: data['message'] 13 end 14 end 15end
以下のようにAPIを作り、FEからこのエンドポイントを叩くのとではどういった点が違うのでしょうか?
ruby
1class MessagesController < ApplicationController 2 def create 3 Message.create!(body: params[:message]) 4 ActionCable.server.broadcast 'room_channel', body: params[:message] 5 end
ネット上の記事では前者の方法を採用している例が多い気がしますが、私がActionCableについては初学者でまだ理解が浅い部分があるため、いずれも結果としてMessageを保存し購読者にその内容を送信している点で同じに感じてしまいます。
どのような理由・意味合いで使い分けを行うのでしょうか?
ご教示いただけますと幸いです。よろしくお願い致します。
あなたの回答
tips
プレビュー