路线上的推送器未在 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 的集成:
- 您与 Pusher 的 HTTP (REST) 的交互 API
- 使用 Pusher 调试控制台确保 Pusher 正在接收事件
- 通过检查 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.
我正在为 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 的集成:
- 您与 Pusher 的 HTTP (REST) 的交互 API
- 使用 Pusher 调试控制台确保 Pusher 正在接收事件
- 通过检查 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.