使用WebsocketRails在控制器中捕获subscribe / subscribe_private

时间:2014-07-21 19:47:14

标签: ruby-on-rails websocket ruby-on-rails-4.1

我使用Rails 4.1.0和Thin,我的Gemfile读取" gem' websocket-rails'"。

到目前为止,我已经能够正确地使用渠道和触发双方的行动。但是,当客户端套接字尝试加入某个频道时,我试图获得某种通知(:subscribe /:subscribe_private)(让它为私有或公共,它不会改变问题)。< / p>

基本上,我看到来自websocket-rails gem的lib / websocket_rails / internal_event.rb正在处理这个流程,但是当我从我的事件路由文件中执行相同操作时,它根本就不会被调用,而我所有的更多& #39;定期&#39;行动起作用。

subscribe :subscribe, :to => MessagesController, :with_method => :test
subscribe :unsubscribe, :to => MessagesController, :with_method => :test

是否有任何一种技巧可以使其发挥作用,例如要使用的WSR的特定版本,还是其他什么?到目前为止,我已经尝试过使用宝石的不同分支。

谢谢!

1 个答案:

答案 0 :(得分:0)

我实际上找到了这个问题的答案。这很奇怪,实际上这两个事件(:subscribe /:subscribe_private)仅在被:websocket_rails命名空间包围时才被使用。

所以这不起作用:

WebsocketRails::EventMap.describe do
  subscribe   :subscribe,           to: WebsocketMessagesController,  with_method: :subscribe
  subscribe   :subscribe_private,   to: WebsocketMessagesController,  with_method: :subscribe_private
  subscribe   :client_connected,    to: WebsocketMessagesController,  with_method: :client_connected
  subscribe   :index,               to: WebsocketMessagesController,  with_method: :index
  subscribe   :create,              to: WebsocketMessagesController,  with_method: :create
end

虽然这样做:

WebsocketRails::EventMap.describe do
  namespace :websocket_rails do
    subscribe   :subscribe,           to: WebsocketMessagesController,  with_method: :subscribe
    subscribe   :subscribe_private,   to: WebsocketMessagesController,  with_method: :subscribe_private
  end
  subscribe   :client_connected,    to: WebsocketMessagesController,  with_method: :client_connected
  subscribe   :index,               to: WebsocketMessagesController,  with_method: :index
  subscribe   :create,              to: WebsocketMessagesController,  with_method: :create
end