Laravel Pusher Websocket 不适用于 HTTPS

kyo*_*kyo 10 php websocket laravel pusher pusher-js

我使用的是 Laravel 5.8,我们在我们的应用程序中使用了带有 PUSHER 的网络套接字。它在本地或当我处于 HTTP 模式时完美地广播。当我将设置更新为 HTTPS 时,广播不再有效。

Any hints on this ? anyone ?
Run Code Online (Sandbox Code Playgroud)

我试过了

#客户端

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    wsHost: window.location.hostname,
    encrypted: false,
    // wsPort: 6001,
    // wssPort: 6001,
    disableStats: true,
    forceTLS: true,
    enabledTransports: ['ws', 'wss']
});
Run Code Online (Sandbox Code Playgroud)

#服务器端

'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'),
        'scheme' => 'http',
        'useTLS' => true,
        'debug' => true,
        'curl_options' => [
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_SSL_VERIFYPEER => 0,
            CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4
        ]
    ],
],
Run Code Online (Sandbox Code Playgroud)

结果一样!不工作!

它在本地 Chrome 上运行良好,但在 firefox 上运行良好

我在控制台看到这个

在此处输入图片说明

Maa*_*man 12

您没有连接到正确的端口,或者 Echo 的默认端口不是您应该用于 pusher 的默认端口。在 JavaScript 前端.env文件中定义正确的端口。(我不知道您的存储库设置,但有时您可以使用.env.local文件,例如在 Vue 设置中)。

Pusher 似乎使用默认 Web 端口 80 和 443,如下所述:https : //pusher.com/docs/channels/library_auth_reference/pusher-websockets-protocol

在您的 中定义端口后.env,更改您的 JavaScript 代码:

wsPort: process.env.MIX_PUSHER_WS_PORT, 
wssPort: process.env.MIX_PUSHER_WSS_PORT,
Run Code Online (Sandbox Code Playgroud)

不要忘记重建你的前端。