websocket-rails连接初始化 - dispatcher.state卡在"连接"

时间:2014-10-29 06:26:31

标签: ruby-on-rails websocket

我正在尝试从客户端到我的RoR应用程序设置一个基本的websocket。我已经使用了websocket-rails gem。

我已经设置了一个简单的eventMap映射。 配置/ events.rb:

WebsocketRails::EventMap.describe do
  namespace :tasks do
    subscribe :create, :to => TaskController, :with_method => :create
  end
end

一个简单的控制器: 应用程序/控制器/ task_controller.rb:

class TaskController < WebsocketRails::BaseController
  def create
    puts "In task create"
    send_message :create_success, task, :namespace => :tasks
  end
end

最后从客户端进行初始化:

$(function() {
   var task = {
     name: 'Start taking advantage of WebSockets',
     completed: false
   }

   var dispatcher = new WebSocketRails('localhost:3000/websocket');

   dispatcher.on_open = function(data) {
     alert("on_open");
      console.log('Connection has been established: ', data);
     // You can trigger new server events inside this callback if you wish.
   } 


   $("#ws-test").click(function() {
      dispatcher.trigger('tasks.create', task);
   });

   dispatcher.bind('tasks.create_success', function(task) {
     console.log('successfully created ' + task.name);
    })

});

当访问触发此代码的页面时,在网络流量中,我看到了对ws:// localhost:3000 / websocket的请求。 该请求将返回状态码 101切换协议。 js中没有错误,也没有服务器端的日志。

这是我感到困惑的地方。通过RFC 101意味着握手成功,所以我认为连接初始化完成得很好。 但是,在检查和调试客户端时,dispatcher.state仍然在&#34;连接&#34;。
尝试调用dispatcher.trigger时,没有任何反应。
在调试websocket-rails内部代码时,在触发器期间检查dispatcher.state,如果它没有连接&#34;,则将其推送到队列而不是继续处理它。

这就是它永远陷入困境的原因。在Mozilla Firefox 33.0和Chrome版本38.0.2125.104上进行了测试

任何见解都将不胜感激。

ruby​​ 2.0.0p576
Rails 4.1.1
websocket-rails-0.7.0

0 个答案:

没有答案