Ruby on rails 仅在刷新页面后才接收到专用推送器通道上的事件?

Ruby on rails 仅在刷新页面后才接收到专用推送器通道上的事件?,ruby-on-rails,ruby,websocket,pusher,Ruby On Rails,Ruby,Websocket,Pusher,我正在创建一个专用通道,长时间运行操作的结果将在该通道上发送。我的浏览器控制台中有以下内容: Pusher : State changed : initialized -> connecting rt_cli...?body=1 (line 5) Pusher : Connecting : {"transport":"ws","url":"ws://ws-eu.pusher.com:80/app/xxxxxxxxxxxxx?protocol=6&client=js&vers

我正在创建一个专用通道,长时间运行操作的结果将在该通道上发送。我的浏览器控制台中有以下内容:

Pusher : State changed : initialized -> connecting
rt_cli...?body=1 (line 5)
Pusher : Connecting : {"transport":"ws","url":"ws://ws-eu.pusher.com:80/app/xxxxxxxxxxxxx?protocol=6&client=js&version=2.1.2&flash=false"}
rt_cli...?body=1 (line 5)
Pusher : State changed : connecting -> connected
rt_cli...?body=1 (line 5)
POST http://localhost:3000/pusher/auth

pusher.min.js (line 111)
Connected to Pusher!
common.js?body=1 (line 56)
Pusher : Event sent : {"event":"pusher:subscribe","data":{"auth":"179bfeac81d16e6ae36f:81fa74052368dac232d70146d2f2d343f3d4ce5befc34bce43673a9e6ceaa38a","channel":"private-user-channel-11"}}
rt_cli...?body=1 (line 5)
Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"private-user-channel-11"}
rt_cli...?body=1 (line 5)
Pusher : No callbacks on private-user-channel-11 for pusher:subscription_succeeded
客户端连接如下所示:

  $(document).ready(function() {
      Pusher.host = 'ws-eu.pusher.com';
      Pusher.sockjs_host = 'sockjs-eu.pusher.com';

      pusher = new Pusher("#{ ENV["PUSHER_APP_KEY"] }", {cluster: "eu"});
      var channel = pusher.subscribe("private-user-channel-11");

      // Some useful debug msgs
      pusher.connection.bind('connecting', function() {
        clog("connecting to pusher");
      });
      pusher.connection.bind('connected', function() {
        clog('Connected to Pusher!');
      });
      pusher.connection.bind('failed', function() {
        clog('Connection to Pusher failed :(');
      });
      channel.bind('subscription_error', function(status) {
        clog('Pusher subscription_error');
      });

      channel.bind("ninja", function(e) {
        console.log(e);
      });
    });
Pusher.trigger s_channel_name, "ninja", {"message" => "whatever"}
在我的工作进程中,我触发如下事件:

  $(document).ready(function() {
      Pusher.host = 'ws-eu.pusher.com';
      Pusher.sockjs_host = 'sockjs-eu.pusher.com';

      pusher = new Pusher("#{ ENV["PUSHER_APP_KEY"] }", {cluster: "eu"});
      var channel = pusher.subscribe("private-user-channel-11");

      // Some useful debug msgs
      pusher.connection.bind('connecting', function() {
        clog("connecting to pusher");
      });
      pusher.connection.bind('connected', function() {
        clog('Connected to Pusher!');
      });
      pusher.connection.bind('failed', function() {
        clog('Connection to Pusher failed :(');
      });
      channel.bind('subscription_error', function(status) {
        clog('Pusher subscription_error');
      });

      channel.bind("ninja", function(e) {
        console.log(e);
      });
    });
Pusher.trigger s_channel_name, "ninja", {"message" => "whatever"}
问题是,我的页面加载,脚本执行,但在浏览器中我没有收到消息。但是,如果我刷新页面(并在浏览器控制台中保留日志,我会看到收到消息)。此外,我注意到,如果我在两个不同的浏览器中登录,并在这两个浏览器中保持页面打开,则未刷新的浏览器将实时接收事件。这让我相信,触发(即使是间接的请求)的浏览器被排除在消息接收者之外。是否有办法向连接到专用频道的所有用户广播?此外,如果我从Rails控制台手动触发事件,它似乎会立即出现(无需刷新浏览器)


编辑:看起来我的工作人员在浏览器加载页面之前完成了他的工作,消息丢失了。很抱歉,我认为问题出在别处。

问题是工作人员在页面加载完成之前触发了消息,我无法对事件作出反应。

可能值得提交您的解决方案作为答案你自己的问题,并将其标记为答案。这样看来,这似乎仍然不是一个悬而未决的问题。