2017-08-16 108 views
0

我一直在測試Laravel Echo,它對非私人頻道的效果很好。我收到了通過該非私人頻道上的事件傳遞的數據。但問題是,當我將事件設置爲在私人頻道上廣播時,我收到了以下錯誤消息: 注意:我以用戶身份登錄,如圖所示。 Private server errorLaravel 5.4 Pusher(laravel-echo)無法訪問私人頻道

當我訂閱了一個私人頻道,在Laravel我去了config/app.php並取消註釋'App \ Providers \ BroadcastServiceProvider :: class,'。 還去到App \供應商\ BroadcastServiceProvider.php和使用的代碼按下面的圖片: BroadcastServiceProvider

我的資源/資產/ JS/bootstrap.js文件有下面的代碼,並使用laravel混合編譯:

import Echo from 'laravel-echo' 
window.Pusher = require('pusher-js'); 

window.Echo = new Echo({ 
    broadcaster: 'pusher', 
    key: 'hiddenkey', 
    cluster: 'ap1', 
    encrypted: true 
}); 

window.Echo.private('chat-room.1') 
     .listen('ChatMessageWasReceived', (e) => { 
      console.log(e.user, e.chatMessage); 
}); 

順便說一句,我已經安裝了所有的依賴關係,即: - 作曲家需要推/推的PHP服務器, - NPM安裝--save laravel回波推-JS, 還配置我的配置/ broadcasting.php使用對.env文件的引用已經輸入了推送器所需的所有信息。一切工作正常,你可以看到這是我從事件接收數據按下面的圖片非專用通道: enter image description here

這裏是我創建的事件: Event

我收到專用通道,事件和數據按圖片: enter image description here

爲什麼即使我是一個登錄的身份驗證的用戶,並在BroadcastServiceProvider.php文件我是回真到了Broadcast::channel()方法,我沒有看到從我的活動傳遞的數據?我從非私人頻道收到數據,爲什麼不在私人頻道?我做錯了什麼?爲什麼會出現這些錯誤在我的控制檯,而不是數據:

- POST http://example.dev/broadcasting/auth 500 (Internal Server Error) 
- Pusher : Couldn't get auth info from your webapp : 500 

順便說一句,我下面這個教程直到我堅持了專用通道: https://mattstauffer.co/blog/introducing-laravel-echo

回答

0

這個問題的解決方案是,私人渠道應該有一個通配符。在您的Providers/BroadcastServiceProvider.php中,在定義您的私人頻道的授權時,您應該將專用頻道的通配符放在「{}」中。在我的情況應該按如下:

Broadcast::channel('chat-room.{chatroomId}', function ($user, 
    $chatroomId) {}); 

需要注意的是,即使我定義的「聊天room.1」在我的活動我的私人頻道的名字,我還是必須使用「{}」根據以上代碼爲通配符而不是'1',因爲私人頻道應該有通配符。你不能使用*作爲通配符,就像問題一樣。

希望它可以幫助任何人。