前提・実現したいこと
https://floating-wildwood-37299.herokuapp.com/
↑このような簡単なチャットアプリを作りました。
複数デバイス間のメッセージ同期を実現したいです。
発生している問題・エラーメッセージ
スマホで別のユーザーとしてログインし、投稿したところ、ノートpcの投稿が同期されませんでした。
ページをリロードすると投稿が表示されます。
試したこと
-同じブラウザ内で別のユーザーとして投稿したところ、同期されました。
-違うデバイスで同じUser名でログインし、投稿すると同期されます。
-違うデバイスで違うuser名でログインすると、投稿が同期されません。
該当のソースコード
//room_channel.rb class RoomChannel < ApplicationCable::Channel include SessionsHelper def subscribed stream_from "room_channel" end def unsubscribed # Any cleanup needed when channel is unsubscribed end def speak(data) Message.create!(content: data['message'], user_id: current_user.id) end end
//message_broadcast_job.rb class MessageBroadcastJob < ApplicationJob queue_as :default def perform(message) ActionCable.server.broadcast 'room_channel', message: render_message(message) end private def render_message(message) ApplicationController.renderer.render(partial: 'messages/message', locals: { message: message }) end end
#channels/room.coffee App.room = App.cable.subscriptions.create "RoomChannel", connected: -> # Called when the subscription is ready for use on the server disconnected: -> # Called when the subscription has been terminated by the server received: (data) -> $('#messages').append data['message'] speak: (message) -> @perform 'speak', message: message $(document).on 'keypress', '[data-behavior~=room_speaker]', (event) -> if event.keyCode is 13 # return = send App.room.speak event.target.value event.target.value = '' event.preventDefault()
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。