gpt4 book ai didi

laravel - Beyondcode laravel-websocket 未连接到服务器

转载 作者:行者123 更新时间:2023-12-04 13:55:12 25 4
gpt4 key购买 nike

我正在尝试使用 beyondcode/laravel-websockets 构建一个聊天应用程序。当我在本地使用它时,它运行良好,但在服务器上无法运行。
我的配置如下
我的回声设置 (Js/Bootstrap.js)

window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: false,
wsHost: window.location.hostname,
wsPort: 6001,
});
我的推送器设置 (Broadcasting.php)
'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' => false,
'host' => env('WEBSOCKET_HOST'),
'port' => env('WEBSOCKET_PORT'),
'scheme' => env('WEBSSOCKET_SCHEME'),
],
],
我的 Webscoket 设置 (Websockets.php)
'dashboard' => [
'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001),
],

'apps' => [
[
'id' => env('PUSHER_APP_ID'),
'name' => env('APP_NAME'),
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'path' => env('PUSHER_APP_PATH'),
'capacity' => null,
'enable_client_messages' => true,
'enable_statistics' => true,
],
],
我的 .env 配置
PUSHER_APP_ID=MyDefaultIdForURMENU
PUSHER_APP_KEY=1234567
PUSHER_APP_SECRET=MyDefaultSecretForURMENU
PUSHER_APP_CLUSTER=mt1

WEBSOCKET_HOST = 127.0.0.1

WEBSOCKET_PORT = 6001

WEBSSOCKET_SCHEME= http

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
现在,当我直接在 ssh 中运行 websocket 或使用 setid 使用命令时
php artisan websockets:serve
或者
setsid php artisan websockets:serve
表明

Starting the WebSocket server on port 6001...


但控制台日志显示要么

WebSocket connection to 'wss://mydomain.com/app/1234567?protocol=7&client=js&version=5.0.3&flash=false' failed: Error during WebSocket handshake: Unexpected response code: 404


或 有时

WebSocket connection to 'ws://mydomain.com:6001/app/1234567?protocol=7&client=js&version=5.0.3&flash=false' failed: WebSocket is closed before the connection is established.


请指导我我做错了什么

最佳答案

大家好,我遇到了这个问题,我从上到下搜索了互联网,最后做了以下工作使其在 VPS 上运行
1- Config/broadcasting.php

'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'useTLS' => true,
'encrypted' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'https',
'curl_options' => [
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
]
]
]
2- 资源/js/bootstrap.js
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
forceTLS: true,
encrypted: true,
wsHost: window.location.hostname,
wsPort: 6001,
wssPort: 6001,
enabledTransports: ['ws','wss'],
disableStats: true
});
3- 配置/websockets.php
'ssl' => [
/*
* Path to local certificate file on filesystem. It must be a PEM encoded file which
* contains your certificate and private key. It can optionally contain the
* certificate chain of issuers. The private key also may be contained
* in a separate file specified by local_pk.
*/
'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),

/*
* Path to local private key file on filesystem in case of separate files for
* certificate (local_cert) and private key.
*/
'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),

/*
* Passphrase for your local_cert file.
*/
'passphrase' => null,
'verify_peer' => false
],
4- .env
LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT="../ssl/certs/filename.crt"
LARAVEL_WEBSOCKETS_SSL_LOCAL_PK="../ssl/keys/filename.key"
第 3 步和第 4 步也很重要,就像第 1 步和第 2 步一样,您需要提供 .crt 和 .key 文件路径。不同服务器的路径可能不同,您可以向上移动到 cpanel 文件管理器中的 public_html 文件夹,并找到这些文件的 ssl 文件夹。

关于laravel - Beyondcode laravel-websocket 未连接到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63852058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com