【发布时间】:2021-08-28 05:21:33
【问题描述】:
我有一个 Laravel 8 API 项目以及一个使用 Laravel Echo 的 Nuxt JS 前端。我已经安装了 Laravel Websockets 服务器,并且使用 Pusher 替换配置一切正常:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'http'
],
],
这里还值得注意的是,我也尝试过:
'options' => [
...
'port' => 6001,
'scheme' => 'https'
],
还有……
'options' => [
...
'port' => 443,
'scheme' => 'https'
],
但是,当我部署到我的 CentOS 8 服务器并使用 php artisan websockets:serve 启动 websockets 服务器时 (我处于调试模式) 我尝试连接时,连接失败错误。我使用6001的默认端口和0.0.0.0的默认主机,我从前端得到的错误是:
到 'wss://127.0.0.1/app/local?protocol=7&client=js&version=7.0.3&flash=false' 的 WebSocket 连接失败:
例如,我的前端是:https://example-gui.example.com/,而我正在运行的 API 在 https://example-api.example.com/ 上,两者都在同一台服务器上,并且与正在运行的 websockets 服务器位于同一台服务器上。
我将 Cloudflare 用于 HTTP,但我不确定是否需要对主机进行任何更改?
我最初的连接是这样的:
'wss://127.0.0.1/app/local?protocol=7&client=js&version=7.0.3&flash=false',当我运行
netstat -tulnp时,我确实看到端口6001在那里。
我在生产中缺少什么连接?
我一直不知道如何连接它!
【问题讨论】:
-
设置你的前端 Laravel Echo 以使用正确的域:
https://example-api.example.com而不是127.0.0.1。 -
我已尝试使用该域,但它继续挂起