2016-11-02 39 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