Pusher和Laravel 5.3事件广播

时间:2016-11-25 18:54:01

标签: laravel events websocket pusher broadcasting

尝试将Laravel 5.3与推送器一起使用,但它似乎在我的代码中无法正常工作。

我的.env是正确的

where

这是我在broadcast.php中的'推动'配置

PUSHER_APP_ID= myappid
PUSHER_KEY= mykey
PUSHER_SECRET= mysecret

我创建了一个活动,这里是

    'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_KEY'),
        'secret' => env('PUSHER_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
          'cluster' => 'eu',
          'encrypted' => true,
        ],
    ],

我的javascript

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class ProposalEvent implements ShouldBroadcast
{
    use InteractsWithSockets, SerializesModels;

    public $data;

    /**
 * Create a new event instance.
 *
 * @return void
 */
public function __construct($data)
{
    $this->data = $data;
}

/**
 * Get the channels the event should broadcast on.
 *
 * @return Channel|array
 */
public function broadcastOn()
{
    return ['test-channel'];
    // return new PrivateChannel('test-channel');
    // return new PresenceChannel('test-channel');
}
}

最后在我看来

Pusher.logToConsole = true;

var pusher = new Pusher("mykey", {
  cluster: 'eu',
  encrypted: true
});
var channel = pusher.subscribe('test-channel');
channel.bind('App\\Events\\ProposalEvent', function(data) {
  alert(data);
});

不幸的是,这对我不起作用,但是当我使用pusher-&gt;这样的触发器时,没有事件,它工作正常,我在推送调试控制台中看到消息

event(new App\Events\ProposalEvent('some data'));

我在Laravel文档和其他资源中搜索过解决方案。 stackoverflow中存在同样问题的问题,但没有回复。如果有人可以帮助我,我将不胜感激,因为我几天都找不到解决方案

3 个答案:

答案 0 :(得分:1)

我遇到了同样的情况,发现我没有使用队列!

在文档中说

  

在广播事件之前,您还需要配置并运行队列侦听器。所有事件广播都是通过排队的作业完成的,这样您的应用程序的响应时间就不会受到严重影响。

之前我删除了config / queue.php文件,因为我以为我没有使用它。也许你和我做同样的事情或者队列有问题。

答案 1 :(得分:0)

尝试直接通过config / broadcasting.php

传递推送凭据

它对我有用。

'default' =>  'pusher',
'connections' => [

    'pusher' => [
        'driver' => 'pusher',
        'key' => '***',
        'secret' => '**',
        'app_id' => '**',
        'options' => [
        ],
    ],
],
enter code here

答案 2 :(得分:0)

在视图中触发事件是错误的,首先加载页面是先执行php,然后加载js,这意味着您在js列表显示之前显示php触发了事件,这可能是第一种情况 第二种情况是您没有下载https://curl.haxx.se/docs/caextract.html 如果您确实访问过php.ini,并且在[curl]中会发现类似curl-info的内容,则会对其进行注释 并选择culr文件的路径