[英]laravel echo with redis and 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的事件,但是我的客戶端控制台沒有任何東西:我也在我的master.blade.php中包含socket io
以上也會發生通知
任何幫助將受到高度贊賞。 多謝你們
您是否在BroadcastServiceProvider中為您的頻道定義了身份驗證規則?
如果你在laravel-echo-server.json中放入devMode,你看到有關連接和離開頻道的任何信息嗎?
我試圖建立我的websocket連接時遇到了很多麻煩,但最后我發現它並且我的代碼看起來非常像你的。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.