1
我能找到的所有例子都是订阅单个房间,但是如果我有房间A,B和C以及我(作为用户)都在其中。如何使用Action Cable订阅多个聊天室
我能找到的所有例子都是订阅单个房间,但是如果我有房间A,B和C以及我(作为用户)都在其中。如何使用Action Cable订阅多个聊天室
一个例子也许这是东西,可以帮助link,在* .js.erb模板,你可以动态地创建房间本身。
<% Chatroom.all.each do |chatroom| %>
App['room' + <%=chatroom.id%>] = App.cable.subscriptions.create({channel: 'MessagesChannel', room: <%=chatroom.id%>}, {
received: function(data) {
$("[data-chatroom='" + this.chatroomId + "']").removeClass('hidden')
return $("[data-chatroom='" + this.chatroomId + "']").append(data.message);
},
setChatroomId: function(chatroomId) {
this.chatroomId = chatroomId
}
});
<% end %>
什么阻止你只做三次? 'App.cable.subscriptions.create {信道: “ChatChannel”,内: “RoomA”}' 'App.cable.subscriptions.create {信道: “ChatChannel”,内: “RoomB”}' 'App.cable.subscriptions.create {channel:“ChatChannel”,room:“RoomC”}' – Shaunak
房间来自分贝,所以我不能硬编码它们。我将不得不创建JS dynmically - .-必须有一个更简单的方法 –
你不需要在你的JavaScript文件中硬编码。您可以在JavaScript中获取房间列表。许多方法来做到这一点。您可以使用js.erb将它们呈现为js。或者,您可以拨打服务器的ajax电话并接收可用聊天室列表。您所要求的不是Rails或Action Cable问题。其基本的服务器客户端体系结构以及它如何使用AJAX进行交互。 – Shaunak