Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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_Redis_Socket.io_Laravel Echo - Fatal编程技术网

Laravel Echo专用通道未侦听

Laravel Echo专用通道未侦听,laravel,redis,socket.io,laravel-echo,Laravel,Redis,Socket.io,Laravel Echo,我正在尝试创建一个实时聊天应用程序。我使用了Laravel Echo、Redis和socket io 但是laravel echo没有收听私人广播聊天频道 App\Events\MessagePushed 公共函数broadcastAs() { 返回“new.message”; } 公共功能广播 { 返回新的PrivateChannel(“应用程序聊天-{$this->message->job\u应用程序\u id}”); } routes/channels.php Broadcast::ch

我正在尝试创建一个实时聊天应用程序。我使用了Laravel Echo、Redis和socket io

但是
laravel echo
没有收听私人广播聊天频道

App\Events\MessagePushed

公共函数broadcastAs()
{
返回“new.message”;
}
公共功能广播
{
返回新的PrivateChannel(“应用程序聊天-{$this->message->job\u应用程序\u id}”);
}
routes/channels.php

Broadcast::channel('application-chat-{job\u application\u id}),函数($user,$job\u application\u id){
返回auth()->check();
});
存储消息资源方法

公共函数存储(StoreFormRequest$request,JobApplication$application)
{
$request->merge([
'sender_id'=>$request->user()->id,
]);
$message=$application->messages()->create($request->all())
->加载(['sender','receiver']);
事件(新消息推送($message));
返回响应()->json([
'message'=>$message,
]);
}
收听私人频道

window.Echo.private(`application-chat-${this.messageApplication}`)
      .listen('.new.message', (data) => {
          console.clear();
         console.log('Got event...', data);
});

希望它有助于调试:

Laravel echo服务器配置:

{
    "authHost": "domain.local",
    "authEndpoint": "/broadcasting/auth",
    "database": "redis",
    "databaseConfig": {
        "redis": {}
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}
php artisan队列:工作:

{
    "authHost": "domain.local",
    "authEndpoint": "/broadcasting/auth",
    "database": "redis",
    "databaseConfig": {
        "redis": {}
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}
检查队列是否发送事件

laravel回声服务器

检查用户是否加入通道,回声服务器是否发送事件

Laravel Echo:

{
    "authHost": "domain.local",
    "authEndpoint": "/broadcasting/auth",
    "database": "redis",
    "databaseConfig": {
        "redis": {}
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}
也许是broacastAs的问题。尽量不要使用它。别忘了将名称空间属性添加到配置中

window.Echo = new Echo({
    namespace: 'App.Events',
    broadcaster: 'socket.io',
    host: window.location.protocol + '//' + window.location.hostname + ':6001',
    auth: {
        headers: {
            Authorization: //auth
        }
    }
});
事件名称=事件类的名称

window.Echo.private(`application-chat-${this.messageApplication}`)
    .listen('MessagePushed', (data) => {
        console.log(data);
    });

我认为问题在于名称空间

window.Echo = new Echo({
    namespace: 'App.Events',
});

你试过直接指向事件吗。听着('messagepush')我试过了,没有变化你用什么作为套接字提供程序?我用Redis作为消息广播。如果我没有错的话。。这很好,但您仍然需要将这些信息发送给用户的东西。看看beyondcode/laravel websockets和tlaverdure/laravel echo服务器