Laravel echo服务器客户端未接收事件
我有一个使用此软件包()的小型Laravel Echo服务器设置。我有以下设置:Laravel echo服务器客户端未接收事件,laravel,socket.io,laravel-echo,Laravel,Socket.io,Laravel Echo,我有一个使用此软件包()的小型Laravel Echo服务器设置。我有以下设置: // app.js import Echo from "laravel-echo"; window.Echo = new Echo({ broadcaster: 'socket.io', host: 'http://vaprobash.dev:6001' }); window.Echo.channel('documents-sharing') .listen("Api\\Documen
// app.js
import Echo from "laravel-echo";
window.Echo = new Echo({
broadcaster: 'socket.io',
host: 'http://vaprobash.dev:6001'
});
window.Echo.channel('documents-sharing')
.listen("Api\\DocumentShared", (event) => {
console.log(event);
});
当点击/notify
路径时,我触发事件
Route::get('notify', function() {
$user = User::first();
$resource = Resource::first();
$share = Share::first();
event(new DocumentShared($user, $resource, $share));
return 'done';
});
我可以看到服务器已收到事件,但它未显示在队列中
问题是客户端无法连接到服务器,因为端口没有响应。讽刺的是,我刚刚从
laravel echo server.json
config文件中删除了host
键,然后重新运行服务器。一切都很顺利 如果您使用的是最新版本,请尝试降级到“socket.io客户端”:“2.3.0”。在搜索解决方案的几天后,这为我修复了它。您是否看到Redis使用监视器
命令发生了什么事情?是的,事件接收正确。我想这是前端的东西,或者我遗漏了什么!将window.Echo.channel()
更改为Echo.channel()
怎么样?什么都不会发生。代码看起来正确吗?
// laravel-echo-server.json
{
"authHost": "http://localhost",
"clients": [
{
"appId": "986bb8954bb1e2e9",
"key": "58ca6a205718590ad5fd88a1afc1877c"
}
],
"database": "redis",
"databaseConfig": {
"redis": {
"port": "6379",
"host": "localhost"
},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": "localhost",
"port": "6001",
"protocol": "http",
"socketio": {},
"sslCertPath": "",
"sslKeyPath": ""
}
// DocumentShared.php
class DocumentShared implements ShouldBroadcast, ShouldBroadcastNow
{
use SerializesModels, InteractsWithSockets;
/**
* @var User
*/
public $user;
/**
* @var Resource
*/
public $resource;
/**
* @var Share
*/
public $share;
/**
* Create a new event instance.
*
* @param User $user
* @param Resource $resource
* @param Share $share
*/
public function __construct(User $user, Resource $resource, Share $share)
{
$this->user = $user;
$this->resource = $resource;
$this->share = $share;
}
public function broadcastOn()
{
return new Channel("documents-sharing");
}
}
// app.blade.php
<script src="{{ asset('js/socket.io.min.js') }}"></script>
<script src="{{ asset('js/home.js') }}"></script>
gulp watch
redis-server
node server.js
laravel-echo-server start
php artisan queue:listen
Route::get('notify', function() {
$user = User::first();
$resource = Resource::first();
$share = Share::first();
event(new DocumentShared($user, $resource, $share));
return 'done';
});