Javascript Pusher没有收到任何事件

Javascript Pusher没有收到任何事件,javascript,php,laravel,pusher,Javascript,Php,Laravel,Pusher,我正在使用带pusher的laravel向pusher发送事件消息。代码在我的控制器中,它是一个post控制器,在提交输入表单时触发。下面是我的代码。我做错了什么?没有收到任何事件。 这是一个基于ajax调用路由的控制器 $pusher = new Pusher( env('PUSHER_KEY'), env('PUSHER_SECRET'), env('PUSHER_APP_ID'), array( 'encrypted' => true ) ); $pusher->trigger

我正在使用带pusher的laravel向pusher发送事件消息。代码在我的控制器中,它是一个post控制器,在提交输入表单时触发。下面是我的代码。我做错了什么?没有收到任何事件。 这是一个基于ajax调用路由的控制器

$pusher = new Pusher( env('PUSHER_KEY'), env('PUSHER_SECRET'), env('PUSHER_APP_ID'), array( 'encrypted' => true ) );
$pusher->trigger( 'test_channel', 'my_event', 'hello world' );
<?php

return [

    'connections' => [
        'main' => [
            'auth_key' => env('PUSHER_KEY'),
            'secret' => env('PUSHER_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_CLUSTER')
            ],
            'host' => null,
            'port' => null,
            'timeout' => null,
        ],

        'alternative' => [
            'auth_key' => 'your-auth-key',
            'secret' => 'your-secret',
            'app_id' => 'your-app-id',
            'options' => [],
            'host' => null,
            'port' => null,
            'timeout' => null,
        ],

    ],

];

我还假设您已经正确设置了Pusher帐户,并且您的环境变量是正确的

如果是这样的话,您可能需要确保使用的集群是正确的(对于美国来说,默认集群是可以的,但是在美国东海岸之外,例如,必须明确定义集群)

更新:

控制器代码:

<?php

namespace App\Http\Controllers;

use Vinkla\Pusher\Facades\Pusher;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class TestPusherController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;


    public function test(){
        $arr = array('test' => 'hello world 2') ;
        $pusher = new Pusher( env('PUSHER_KEY'), env('PUSHER_SECRET'), env('PUSHER_APP_ID'), array( 'encrypted' => true, 'cluster' => 'ap1' ) );
        $pusher::trigger( 'test_channel', 'my_event', $arr);

        return $arr;
    }

    public function shortenedTest(){
        $message = 'Hello world';
        Pusher::trigger('my-channel', 'my-event', ['message' => $message]);
    }

}
在Laravel 5.3上,我使用内置PHP服务器并连接到EU服务器(目前我没有任何使用ap1的pusher应用程序),按照中的设置步骤重新安装了vinkla/pusher

您将注意到控制器中的编码有少量更改,以获得正确的格式。您必须“使用”控制器上方的推进器正面

$pusher = new Pusher( env('PUSHER_KEY'), env('PUSHER_SECRET'), env('PUSHER_APP_ID'), array( 'encrypted' => true ) );
$pusher->trigger( 'test_channel', 'my_event', 'hello world' );
<?php

return [

    'connections' => [
        'main' => [
            'auth_key' => env('PUSHER_KEY'),
            'secret' => env('PUSHER_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_CLUSTER')
            ],
            'host' => null,
            'port' => null,
            'timeout' => null,
        ],

        'alternative' => [
            'auth_key' => 'your-auth-key',
            'secret' => 'your-secret',
            'app_id' => 'your-app-id',
            'options' => [],
            'host' => null,
            'port' => null,
            'timeout' => null,
        ],

    ],

];
为了完整起见,我添加了一种更简洁的方法,您可以在Config/Pusher.php文件中设置Pusher凭据,而无需为每次使用设置连接。这可以在控制器上的shortenedTest()方法中看到

$pusher = new Pusher( env('PUSHER_KEY'), env('PUSHER_SECRET'), env('PUSHER_APP_ID'), array( 'encrypted' => true ) );
$pusher->trigger( 'test_channel', 'my_event', 'hello world' );
<?php

return [

    'connections' => [
        'main' => [
            'auth_key' => env('PUSHER_KEY'),
            'secret' => env('PUSHER_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_CLUSTER')
            ],
            'host' => null,
            'port' => null,
            'timeout' => null,
        ],

        'alternative' => [
            'auth_key' => 'your-auth-key',
            'secret' => 'your-secret',
            'app_id' => 'your-app-id',
            'options' => [],
            'host' => null,
            'port' => null,
            'timeout' => null,
        ],

    ],

];

你在调试控制台上看到事件了吗?没有,我没有看到任何事件我还没有在Laravel中使用过这个,但是根据我的阅读,你不应该使用
broadcast()
方法吗?我同意
@Eric Tucker
的观点,即使用内置的Laravel功能进行推送和广播可能对您非常有用,除非您有充分的理由坚持使用/vinkla/Laravel推送包。@MohamedAthif在这种情况下,事件不能到达推送器。我建议使用tcpdump/Wireshark检查事件是否通过网络发送。集群是AP1,im使用Vinkler/pusher包。绝对没有回应。但我可以使用前端javascript触发连接。控制器不能与Javascript连接意味着你的Pusher应用程序应该正确设置,以便代码侦听消息。您的服务器端代码与此无关,必须正确设置才能广播消息。没问题。很高兴我能帮忙;-)