路线上的推送器未在 Laravel 中发送事件

Pusher on route not sending event in Laravel

我正在为 Laravel 4 上的 real-time 通知使用 Pusher 创建一个测试应用程序。 当我测试上述 API 时,我很难让它工作。

我有这个 routes.php:

Route::get('pusher-test', function(){
    return View::make('pages.test');
});
Route::any('test', function(){
        $pusher = new Pusher('key','sect','app_key'); //my keys are correct.
        $pusher->trigger('notificationChannel', 'userRegistration', []);
});

然后是我的 pusherTest.js 文件:

(function(){
    var pusher = new Pusher('key');
    var channel = pusher.subscribe('notificationChannel');
        channel.bind('userRegistration', function(data){
            $('.test').append('HEY!');
        }); 
})();

我的浏览页:

<html>
    <head>
        <meta charset="utf-8">
        {{ HTML::style('_/css/bootstrap.css') }}
        {{ HTML::style('_/css/mystyle.css') }}
    </head>
    <body>
        <h2>HI!</h2>
        <div class="test"></div>
        {{ HTML::script('_/js/bootstrap.js') }}
        {{ HTML::script('_/js/jquery.js') }}
        {{ HTML::script('_/js/pusher/pusher.min.js')}}
        {{ HTML::script('_/js/pusherTest.js')}}
    </body>
</html>

当我尝试在 Pusher.com 上观察我的应用的 Debug Console 时, 这是我看到的:

但是当我点击 test 路由时,它没有在我的 Pusher 应用程序上发送事件,也没有向我的客户端发送 API 消息。但是如果我将在调试控制台上使用 Create new Event 测试器,它肯定会发送 API 消息并且我的客户端会接收并更新它。

您认为发生了什么,为什么在我的路线上它无法将事件发送到我的推送器应用程序?我无法弄清楚,因为它没有异常错误。请指教

您可以在三个点调试与 Pusher 的集成:

  1. 您与 Pusher 的 HTTP (REST) 的交互 API
  2. 使用 Pusher 调试控制台确保 Pusher 正在接收事件
  3. 通过检查 pusher-js 日志记录确保您的客户端集成正常工作

在你的情况下,你已经完成了 2。你可以看到你触发的事件没有到达调试控制台。所以,你需要做 1.

Pusher PHP 服务器库提供了有关如何启用调试的详细信息: https://github.com/pusher/pusher-php-server#debugging

以及如何从库中获取日志信息: https://github.com/pusher/pusher-php-server#logging

一旦您获得了 pusher-php-server 库日志信息,请随时 post 以便我们查看问题所在,例如您收到的是非 2xx 响应代码吗?

对我来说,这是因为我使用的是欧盟服务器,laravel 在我们的服务器上自动配置

此问题是因为您无法为推送器广播设置主机。

只有在使用 EU 集群时才会出现此问题,在这种情况下,您应该将主机更改为:

api-eu.pusher.com

同样,您可以制作自定义广播驱动程序。它与默认设置的功能相同,但设置了主机参数。

I am going to suggest an edit to the illuminate broadcast manager to make this change easier to make.

要扩展@adutu 的答案,您需要设置

'cluster' => 'eu'

在 Pusher 驱动程序配置的 'options' 部分内,在 broadcasting.php.