【问题标题】:Laravel websockets connection failedLaravel websockets连接失败
【发布时间】: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
  • 我已尝试使用该域,但它继续挂起

标签: php laravel websocket


【解决方案1】:

看起来您的前端仍在尝试连接到本地版本的 websocket 服务器。

尝试用您的 example-api URL 替换它。

【讨论】:

  • 我已经尝试使用域进行设置,除了它是域而不是 localhost 变体之外,我得到了相同的结果,所以我认为这不是问题所在案例
猜你喜欢
  • 1970-01-01
  • 2020-02-03
  • 2020-02-11
  • 1970-01-01
  • 2019-09-06
  • 2019-03-05
  • 2014-05-09
  • 2021-03-12
  • 2020-11-26
相关资源
最近更新 更多