javascript - PHP Websocket 错误:net::ERR_SSL_PROTOCOL_ERROR 使用 cloudflare
问题描述
到目前为止,我已经通过 SSL 工作了 PHP Ratchet Websocket。最近,我在我的网站上设置了 cloudflare。这样做之后,我在客户端收到一个错误:Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR
. 当我检查时,后端的 websocket 服务器确实在工作并等待建立连接。
这是前端websocket的建立:const conn = new WebSocket('wss://xyz:8080');
这是我的 websocket 服务器设置:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require __DIR__ . '/vendor/autoload.php';
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use dealspace_websocket\Chat;
$app = new HttpServer(
new WsServer(
new Chat()
)
);
$loop = \React\EventLoop\Factory::create();
$privateKEY = __DIR__ . '/../private/private.pem';
$publicKEY = __DIR__ . '/../private/public.pem';
$secure_websockets = new \React\Socket\Server('0.0.0.0:8080', $loop);
$secure_websockets = new \React\Socket\SecureServer($secure_websockets, $loop, [
'local_cert' => $publicKEY,
'local_pk' => $privateKEY,
'verify_peer' => false
]);
$secure_websockets_server = new \Ratchet\Server\IoServer($app, $secure_websockets, $loop);
$secure_websockets_server->run();
?>
我还在服务器中启用了错误,但在运行服务器时我没有得到任何错误。
解决方案
如果您的服务器使用 Cloudflare 代理,则安全 Websocket 只能使用 Cloudflare 支持的 HTTPS 端口:https: //support.cloudflare.com/hc/en-us/articles/200169156-Which-ports-will-Cloudflare-合作-
- 443
- 2053
- 2083
- 2087
- 2096
- 8443
如果您的域的流量发往与上面列出的端口不同的端口,则可以:通过 Cloudflare DNS 应用程序将子域添加为灰色云记录,或启用 Cloudflare Spectrum。
推荐阅读
- batch-file - 如何使用windows中的批处理文件获取机器中安装的DB2版本是32位还是64位
- html - 如何使用css动画制作两步动画进度条?
- firebase - 使用 GCS 生成缩略图云函数错误
- c++ - 想知道为什么这只删除节点#2
- codenameone - 容器中的可点击地图
- ionic-framework - 离子标签应用程序在新标签添加时抛出错误
- r - 删除不满足 R 中条件的迭代
- ssh - 如何通过恢复 Web 控制台 DigitalOcean 启用 root 登录和密码身份验证?
- c++ - CodeChef 显示 gets() 未在任何范围内声明。虽然在代码块上正常工作
- r - R 和 Rcpp 中的多个多元正态密度值