laravel用redis和socket io回显

我有一个事件SomeEvent.php

像这样:

<?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中包含以下内容,并用gulp进行编译

 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-echo-server,这里是我的laravel-echo-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-echo-server启动laravel echo服务器时,它启动得非常好,但是当我启动上述事件时

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

我可以看到发布到redis的事件,但没有什么是loged到我的客户端控制台:我也包括套接字io在我的master.blade.php

以上情况也发生在通知中

任何帮助将不胜感激。 多谢你们

你在BroadcastServiceProvider中为你的频道定义了一个validation规则吗?

如果在laravel-echo-server.json中放置devMode,您是否看到关于连接和离开通道的任何信息?

我有很多麻烦试图build立我的websocket连接,但终于搞清楚了,我的代码看起来非常像你的。

祝你好运!