我正在使用实时聊天应用程序,但Action Cable无法正常工作。我遵循了documentation,但我必须缺少一些东西。
这是我的代码:
#groups_channel.rb
class GroupsChannel < ApplicationCable::Channel
def subscribed
stream_from "group_#{params[:group_id]}"
end
end
#<!-- app/views/groups/show.html.erb -->
<!-- ... -->
<% content_for :after_js do %>
<script>
App['group_<%= @group.id %>'] = App.cable.subscriptions.create(
{ channel: 'GroupsChannel', group_id: <%= @group.id %> },
{ received: (data) => {
const messagesContainer = document.querySelector('.messages-tab-content');
messagesContainer.insertAdjacentHTML('beforeend', data.message_box);
scrollLastMessageIntoView();
})
</script>
<% end %>
# app/models/message.rb
class Message < ApplicationRecord
after_create :broadcast_message
# ...
def broadcast_message
ActionCable.server.broadcast("group_#{self.group.id}", {
message_partial: ApplicationController.renderer.render(
partial: "groups/message_box",
locals: { message: self }
),
})
end
end
这是控制台中的内容。 即使我在上面的行中强制进行电缆订阅,似乎也没有订阅。
任何线索都将非常有帮助。