Laravel Pusher Websocket 无法在 HTTPS 上运行
Laravel Pusher Websocket Not Working on HTTPS
我正在使用 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 本地完美运行,但 firefox
我在控制台看到了这个
您没有连接到正确的端口,或者 Echo 的默认端口不是您应该用于推送器的默认端口。在 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,
别忘了重建你的前端。
由于我的声望低,不能写评论,所以我会写在这里:
Try changing HTTP to HTTPS in 'scheme' => 'http'
在 websockets.php
中选中此选项
'verify_peer' => false,
另请查看本文中的配置示例:
https://www.digitalocean.com/community/questions/how-to-configure-laravel-websockets-with-ssl-on-nginx
既然你提到了,这是在本地发生的,你可能想看看这个 issue 因为它可能与你正在经历的事情有关......基本上有一个解决方法概述,让 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
});
此外,您的端口被注释掉了...这看起来很奇怪,因为您需要一个到套接字服务的端口。
我正在使用 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 本地完美运行,但 firefox
我在控制台看到了这个
您没有连接到正确的端口,或者 Echo 的默认端口不是您应该用于推送器的默认端口。在 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,
别忘了重建你的前端。
由于我的声望低,不能写评论,所以我会写在这里:
Try changing HTTP to HTTPS in 'scheme' => 'http'
在 websockets.php
中选中此选项'verify_peer' => false,
另请查看本文中的配置示例:
https://www.digitalocean.com/community/questions/how-to-configure-laravel-websockets-with-ssl-on-nginx
既然你提到了,这是在本地发生的,你可能想看看这个 issue 因为它可能与你正在经历的事情有关......基本上有一个解决方法概述,让 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
});
此外,您的端口被注释掉了...这看起来很奇怪,因为您需要一个到套接字服务的端口。