使用操作电缆反映由于另一个项目而发生的一个项目的更改

时间:2017-01-04 08:18:43

标签: ruby-on-rails-5 actioncable

我正在尝试实施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:让我知道这是否令人困惑和混乱。我再试一次。

1 个答案:

答案 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)