10

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

Any hints on this ? anyone ?

我试过了

#客户端

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']
});

#服务器端

'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
        ]
    ],
],

结果一样!不工作!

它在本地的 Chrome 上完美运行,但火狐

我在控制台中看到了这个

在此处输入图像描述

4

3 回答 3

12

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

Pusher 似乎使用默认的网络端口 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,

不要忘记重建你的前端。

于 2020-06-28T14:08:02.343 回答
1

由于我的声誉低,我不能写评论,所以我会在这里写:

尝试在'scheme' => 'http'中将HTTP 更改为 HTTP S

在 websockets.php 中检查此选项

'verify_peer' => 假,

另请查看本文中的配置示例:
https ://www.digitalocean.com/community/questions/how-to-configure-laravel-websockets-with-ssl-on-nginx

于 2020-07-15T10:14:12.463 回答
0

既然您提到,这是在本地发生的,您可能需要查看此问题,因为它可能与您遇到的情况有关......基本上有一个解决方法,让 Firefox 在套接字上使用自签名证书。 ..

此外,如果您从构造函数中删除 'wss' 会发生什么:

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, <-- Should these be commented out?
    // wssPort: 6001, <-- Should these be commented out?
    disableStats: true,
    forceTLS: true,
    enabledTransports: ['ws'] // removed wss
});

此外,您的端口已被注释掉......这看起来很奇怪,因为您需要一个连接套接字服务的端口。

于 2020-07-22T00:25:11.800 回答