我正在尝试实施Action Cable
。我以前只使用过基础知识。我现在正在开发一个项目,其中管理员和客户端部分是两个不同的项目。两者的数据库是相同的。
我想要的是,只要User
(来自Client-Side Project
)发送给管理员,就应该(文本)显示给Admin
({{1}实时,即无需刷新页面。
How to use ActionCable as API给了我一些想法,但我不确定我应该如何向前推进。
我的另一个想法是在Admin side Project
项目中实施action cable
,并在Admin
action
中调用它。现在,当在controller
项目中创建文本时,我将调用此操作(在管理项目的控制器中;我还没有弄明白并且还在处理它)。这样,client
将反映Action Cable
。
我不知道这种方法是否正确或者是另一种方式。
我会感激任何指导。感谢。
P.S:让我知道这是否令人困惑和混乱。我再试一次。答案 0 :(得分:0)
您所需要的只是让管理员用户订阅仅由管理员使用的频道,同时让用户提交的消息广播到该特定频道。
有些事情如下:
渠道/ admin_chat_channel.rb 强>
new Date(1415224071568557470 / 1e6).toUTCString() // 'Wed, 05 Nov 2014 21:47:51 GMT'
我在这个例子中使用了coffeescript。如果你愿意,我可以把它转换成js。
<强> Javascript角/信道/ admin_chat.coffee 强>
class AdminChatChannel < ApplicationCable::Channel
def subscribed
if current_user.is_admin?
stream_from "admin_chat_channel"
end
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
def update
end
end
在您将收到提交消息的控制器上,您只需要广播消息:
(document).ready ->
App.merge_requests = App.cable.subscriptions.create {
channel: "AdminChatChannel"
},
connected: ->
console.log 'Admin Chat Connected'
disconnected: ->
console.log 'Admin Chat Disconnected'
received: (message) ->
$('.some_chat_div').append(message)