2016-11-09 125 views
-1

我使用laravel和推者发送一个事件消息给推者。该代码位于我的控制器中,该控制器是一个后控制器,在提交输入表单时触发。下面是我的代码。我究竟做错了什么?没有收到任何活动。 这是一个基于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'); 
+0

您是否在https://dashboard.pusher.com/上的调试控制台中看到了这些事件? –

+0

不,我没有看到任何事件 –

+0

我还没有在Laravel中使用这个,但是从我的阅读中不应该使用'broadcast()'方法? https://laravel.com/docs/5.3/broadcasting#broadcasting-events –

回答

1

我还假设您已经正确设置了您的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]); 
    } 

} 

在网络路线:

Route::get('testPusherController', '[email protected]'); 
Route::get('shortenedTestPusherController', '[email protected]'); 

我有一个新的这方面的工作按照https://github.com/vinkla/laravel-pusher的设置步骤vinkla /推杆的安装,在Laravel 5.3上,使用内置的PHP服务器和连接到EU服务器(目前我没有任何使用ap1的Pusher应用程序)。

您会注意到控制器中编码的少量​​更改以获取正确的格式。您必须在控制器上方使用Pusher外观。

为了完整起见,我添加了一个更好的工作方式,您可以在Config/pusher.php文件中设置Pusher凭证,而无需为每次使用设置连接。这可以在控制器上的shortenedTest()方法中看到。

<?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, 
     ], 

    ], 

]; 
+0

集群是AP1,即时通讯使用Vinkler/Pusher包。绝对没有回应。但我可以触发与前端JavaScript的连接。只是不是控制器 –

+1

能够与Javascript连接意味着您的Pusher应用程序应该正确地设置为收听消息的代码。您的服务器端代码与此无关,必须正确设置才能广播消息。 –

+0

没问题。很高兴我能帮上忙 ;-) –