代码之家  ›  专栏  ›  技术社区  ›  Brendan

推送:没有对私人用户的回调。6对于推送器:订阅错误

  •  0
  • Brendan  · 技术社区  · 7 年前

    Broadcast::channel('user.{user}', function ($user, $id) {
        return (int) $user->id === (int) $id;
    });
    

    我的环境档案说-

    BROADCAST_DRIVER=pusher
    
    PUSHER_APP_ID="652357"
    PUSHER_APP_KEY="13e1**********55"
    PUSHER_APP_SECRET="1e******667f8*****9f"
    PUSHER_APP_CLUSTER=eu
    

    我的广播里有这个。php

    'default' => env('BROADCAST_DRIVER', 'log'),
    
    'pusher' => [
         'driver' => 'pusher',
         'key' => env('PUSHER_APP_KEY'),
         'secret' => env('PUSHER_APP_SECRET'),
         'app_id' => env('PUSHER_APP_ID'),
         'options' => [
             'cluster' => env('PUSHER_APP_CLUSTER', 'eu'),
             'encrypted' => true,
         ],
     ],
    

    该事件在my UsersController中激发。php

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Events\UserStatusEvent;
    use App\User;
    use Illuminate\Http\Request;
    
    class UserController extends Controller
    {
      /**
       * Create a new controller instance.
       *
       * @return void
       */
       public function __construct()
       {
           $this->middleware(['auth', 'profile'])->except('show', 'help');
       }
    
     /**
      * Update the specified resource in storage.
      *
      * @param  \Illuminate\Http\Request  $request
      * @param  string  $user
      * @return \Illuminate\Http\Response
      */
      public function update(Request $request, User $user)
      {
         $data = $request->only(['first_name', 'last_name', 'middle_name', 'email', 'city', 'dob', 'gender', 'address']);
    
         $user->update($data);
    
         event(new UserStatusEvent(auth()->user()));
    
         // if ($request->ajax()) {
         //     return response()->json([
         //         'status' => 'Profile Update successful.',
         //         'errors' => app('Illuminate\Http\Response')->status(),
         //     ], app('Illuminate\Http\Response')->status());
         // }
    
         return back();
      }
    
    }
    

    我安装了npm并下载了laravel echo(如下所示 Laravel 5.7 Broadcasting Docs )在我的引导程序中。运行前的js文件 $ npm run dev

    import Echo from 'laravel-echo';
    
    window.Pusher = require('pusher-js');
    
    window.Pusher.logToConsole = true;
    
    window.Echo = new Echo({
        authEndpoint: 'http://localhost/penfs/public/broadcasting/auth',
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        cluster: process.env.MIX_PUSHER_APP_CLUSTER,
        encrypted: true
    });
    
    window.Echo.private(`user.${user}`)
        .listen('UserStatusEvent', (e) => {
            console.log(e.user.first_name);
            console.log(e.user.email);
        });
    

    我遇到的第一个错误是 Pusher : No callbacks on private-user.[object HTMLDivElement] for pusher:subscription_error <script type="text/javascript">var user = '{{ $user->id }}'</script> 在我的应用程序之前。使用 npm run dev . 现在,我可以得到auth用户的一个实例,因为我在视图中对它进行了硬编码,但是,我遇到了另一个错误- Pusher : No callbacks on private-user.6 for pusher:subscription_error

    哦,我没有感觉 App\Providers\BroadcastServiceProvider::class,

    编辑 :

    --

    public $user;
    
    public function __construct(User $user){
        $this->user = $user;
    }
    
    public function broadcastOn(){
        return new PrivateChannel('user.'.$this->user->id);
    }
    
    0 回复  |  直到 7 年前
    推荐文章