Zum Beispiel, in dem die die perform
Methode ursprünglich in diesem folgenden Job immer genannt:Woher werden Rails Jobs in ActionCable aufgerufen und wie können Sie Parameter übergeben?
Jobs/message_broadcast_job.rb
class MessageBroadcastJob < ApplicationJob
queue_as :default
def perform(message)
ActionCable.server.broadcast "room_channel", message: render_message(message) #, roomId: roomId
end
private
def render_message(message)
ApplicationController.renderer.render(partial: 'messages/message', locals: { message: message })
end
end
In assets/Javascripts/channels/room.coffee gibt es einen Methodenaufruf :
speak: (message, roomId) ->
@perform 'speak', message: message, roomId: roomId
Aber das scheint in Kanälen/room_channel.rb die entsprechende Methode aufzurufen:
def speak(data)
Message.create! text: data['message'], user_id: 1, room_id: data['roomId']
end
Wo wird der Job aufgerufen und wie kann ich Parameter übergeben? (Genauer gesagt habe ich ein Zimmer Kanal-ID ich bereits room_channel.rb
über Parameter übergeben habe, aber auch diese erhalten müssen in der Aktion durchführen aus dem jeweiligen Raumkanal auszustrahlen.
Dank!