如何解决NuxtJS + Laravel8 + Laravel echo 服务器套接字 io = subscription_error
我有这个奇怪的问题,我无法通过对私人频道进行身份验证来解决。我正在使用 Laravel 8、NuxtJS(SPA 应用程序)、Redis 和单独的 Docker 容器。
当我尝试在我的 SPA NuxtJs 应用程序中收听私人频道时,出现以下错误:
42["subscription_error","private-robert-test-1",0]
我认为这是因为我在 nuxt.config.js
中的回声配置:
echo: {
broadcaster: 'socket.io',host: 'http://publisher-local.co.uk:8080',// authModule: true,// disconnectOnlogout: true,// token: this.token
},
42["subscribe",{"channel":"private-robert-test-1","auth":{"headers":{}}}]
我认为它应该在 auth
对象中有一些东西。所以我遵循了 NuxtJS Laravel Echo Server package 的文档并尝试将 authModule
设置为 true。一旦我这样做,我就会收到这个奇怪的错误:
现在我想,如果它有效,那么 auth 模块会简单地向我之前显示的订阅消息添加一个令牌(带有空 auth
键的那个)。
在 Laravel 中,我已经在 broadcast::routes(['middleware' => ['auth:api']]);
中完成了这个 broadcastServiceProvider
。
虽然我认为我什至没有到达那里。
{
"apiOriginAllow": {},"authEndpoint": "/broadcasting/auth","authHost": "http://publisher-local.co.uk:8080/api/v1","clients": [],"database": "redis","databaseConfig": {
"redis": {
"host": "redis","port": "6379","keyPrefix": "","options": {
"db": "0"
}
},"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
},"publishPresence": true
},"devMode": false,"host": null,"port": 6001,"protocol": "http","sslCertPath": "","sslKeyPath": "","sslCertChainPath": "","sslPassphrase": "","socketio": {},"subscribers": {"http": true,"redis": true}
}
另一方面,公共频道工作得很好。
我在这里错过了什么?提前致谢。
编辑:
我还尝试为 echo 创建一个插件,我可以在其中填充我自己需要的信息,它看起来像这样:
export default function ({ $echo,$auth}) {
console.log($echo.connector.options.auth)
let authData = {
headers: {
Authorization: $auth.strategy.token.get(),Accept: 'application/json',"X-Requested-With": 'XMLHttpRequest'
},};
$echo.connector.options.auth = authData;
$echo.options.auth = authData;
}
所以我现在有令牌和其他标题,我可以在 WS 选项卡中看到它们,但没有任何区别。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。