我使用推杆进行我的项目。我根据laravel docs配置广播。当我解雇我的事件时,推动器对我不起作用。但是当我从推送器控制台发送数据时,推送器会收到这些数据。 我也尝试vinkla / pusher。它的工作很好但是laravel事件广播不起作用。 请帮我。
这是我的TestEvent.php
代码
namespace Factum\Events;
use Factum\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class TestEvent implements ShouldBroadcast
{
use SerializesModels;
public $text;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($text)
{
$this->text = $text;
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return ['test-channel'];
}
}
答案 0 :(得分:5)
我遇到了类似的问题,一步一步地解决了问题。 我假设您正在运行Laravel 5.3。 以下是可能有用的分步演练:
1)检查配置文件:在config \ broadcasting.php中:
'connections' => [
pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_KEY'),
'secret' => env('PUSHER_SECRET'),
'app_id' => env('PUSHER_ID'),
'options' => [
'cluster' => 'eu',
'encrypted' => true,
// 'host' => 'api-eu.pusher.com'
// 'debug' => true,
],
],
]
2)在你的" web.php"中创建一个测试路线。档案
Route::get('/broadcast', function() {
event(new \Factum\Events\TestEvent('Sent from my Laravel application'));
return 'ok';
});
3)在你的" TestEvent.php"事件文件,您应该添加此方法以指定您的事件名称:
/**
* The event's broadcast name.
*
* @return string
*/
public function broadcastAs()
{
return 'my_event';
}
4)打开Pusher dashboard并转到调试控制台。 保持页面打开,以便您可以注意到您的申请是否有成功的请求。
5)启动或重新启动队列工作程序。这一步可以决定一切。如果您使用Mysql表作为队列,我将假设您已经设置了"作业"和" failed_jobs"队列所需的数据库表。 另一个重要元素是worker - 队列处理器。 如果没有活动工作程序运行来处理您的队列,作业(TestEvent)将保持"保持"在jobs表中,意味着作业处于挂起状态,并且在活动工作程序开始处理队列之前不会发生任何事情。
你可以像这样启动工人:
www@yourmachine# PHP artisan queue:work --tries=3
6)现在你已经掌握了一切,以便在" http://your-app.laravel/broadcast"并检查您的推送器调试控制台是否有响应。
可选步骤: 如果仍然缺少某些内容,您可以调试与Pusher的应用程序交互,如下所示: 在您的测试路线中尝试这样做:
路由:: get(' / broadcast',function(){
// New Pusher instance with our config data
$pusher = new \Pusher(config('broadcasting.connections.pusher.key'), config('broadcasting.connections.pusher.secret'), config('broadcasting.connections.pusher.app_id'), config('broadcasting.connections.pusher.options'));
// Enable pusher logging - I used an anonymous class and the Monolog
$pusher->set_logger(new class {
public function log($msg)
{
\Log::info($msg);
}
});
// Your data that you would like to send to Pusher
$data = ['text' => 'hello world from Laravel 5.3'];
// Sending the data to channel: "test_channel" with "my_event" event
$pusher->trigger( 'test_channel', 'my_event', $data);
return 'ok';
});
我希望它也适合你! 玩得开心! ;)
答案 1 :(得分:0)
1 /你应该清除缓存
php artisan config:cache
php artisan config:clear
php artisan route:cache
php artisan route:clear
php artisan optimize --force
2 /并试试这个来推送消息
2.1 / include:use Pusher\Laravel\Facades\Pusher;
2.2 /在路线内添加:
Pusher::trigger('adevChannel', 'EventAdev', ['message' => $message]);
或
event(EventAdev($message) );