Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel echo服务器客户端未接收事件_Laravel_Socket.io_Laravel Echo - Fatal编程技术网

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

我有一个使用此软件包()的小型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\\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';
});