2016-11-02 38 views
6

我有一個事件SomeEvent.phplaravel回聲Redis的插座IO

像這樣:

<?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 SomeEvent implements ShouldBroadcast 
{ 


    use InteractsWithSockets, SerializesModels; 

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

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

我已經列入我bootstrap.js以下,並一飲而盡編譯它

import Echo from "laravel-echo" 

window.Echo = new Echo({ 
    broadcaster: 'socket.io', 
    host: 'http://site.dev:6001' 

}); 

window.Echo.private('channel-name') 
    .listen('SomeEvent', (e) => { 
     console.log(e); 
}); 

的話,我已經安裝了tlaverdure/laravel回波服務器,這裏是我的laravel回波-server.json

{ 
    "appKey": "[generated]", 
    "authHost": "http://site.dev", 
    "authEndpoint": "/broadcasting/auth", 
    "database": "redis", 
    "databaseConfig": { 
     "redis": {}, 
     "sqlite": { 
      "databasePath": "/database/laravel-echo-server.sqlite" 
     } 
    }, 
    "devMode": false, 
    "host": "sitei.dev", 
    "port": "6001", 
    "referrers": [], 
    "socketio": {}, 
    "sslCertPath": "", 
    "sslKeyPath": "" 
} 

現在,當我火了laravel回聲服務器laravel回聲服務器啓動它開始得很好但是當我火了,像這樣

event(new SomeEvent(json_encode(['name' => 'some-name']))); 

我可以看到發佈到Redis的但是沒有該事件的上述事件被loged我的客戶端控制檯:我也包括我master.blade.php

上述插座IO也恰好與通知

任何幫助,將不勝感激。謝謝你們

+0

你能解決這個問題嗎?我有類似的問題仍然打開http://stackoverflow.com/questions/41120789/broadcasting-event-with-socket-io-and-redis-in-laravel-5-3?noredirect=1#comment69445395_41120789任何想法? –

+0

您的主機設置中存在拼寫錯誤,不是嗎? 「sitei.dev」vs「site.dev」。這可能嗎?如果不是,你確定redis工作進程正在運行嗎? – Trip

回答

1

你在BroadcastServiceProvider中爲你的頻道定義了一個驗證規則嗎?

如果在laravel-echo-server.json中放置devMode,您是否看到有關連接和離開通道的任何信息?

我有很多麻煩試圖建立我的websocket連接,但終於搞明白了,我的代碼看起來非常像你的。

祝你好運!

+0

謝謝你已經解決了它 – user2293554