我尝试了很多,但仍然不能正确设置LaravelEcho。实际上我无法设置身份验证,step.The私有通道都没有身份验证。这是larave-echo CLI结果

Boostrap.js
/**
* Echo exposes an expressive API for subscribing to channels and listening
* for events that are broadcast by Laravel. Echo and event broadcasting
* allows your team to easily build robust real-time web applications.
*/
import Echo from "laravel-echo"
// window.Pusher = require('pusher-js');
window.io = require('socket.io-client');
window.Echo = new Echo({
broadcaster: 'socket.io',
host: 'http://localhost:6001'
});Layout.blade.php
Echo.private('App.User.'+id)
.notification((notification) => {
console.log(notification);
});laravel-echo-server.json
{
"authHost": "http://bigplan.com",
"authEndpoint": "/broadcasting/auth",
"clients": [
{
"appId": "*********",
"key": "*************************"
}
],
"database": "redis",
"databaseConfig": {
"redis": {
"port": "6379",
"host": "localhost"
},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": false,
"host": "localhost",
"port": "6001",
"protocol": "http",
"referrers": [],
"sslCertPath": "",
"sslKeyPath": "",
"verifyAuthPath": true,
"verifyAuthServer": false
}发布于 2019-08-13 14:26:38
您可能缺少要进行身份验证的路由,默认情况下它位于routes/channel.php中。如果已通过身份验证,则广播回调应返回true。
下面是一个示例:
Broadcast::channel('notify.{employeeId}', function ($user, $employeeId) {
$employee = $user->employee;
if (!$employee){
return false;
}
return $employee->id==$employeeId;
}); notify.{employeeId}是您在事件类中定义的私有通道名称/
这里的$employeeId是你从echo客户端发送的,它可以是任何东西,在我的例子中,它是雇员ID。
$user是当前通过身份验证的用户。
文档:https://laravel.com/docs/5.5/broadcasting#authorizing-channels
https://stackoverflow.com/questions/47973536
复制相似问题