我有一个涉及 WebSockets 的问题,好吧,我有一个网站,最近我在上面放了 SSL,使用 Let's Encrypt,好的,SSL 运行良好,我的网站托管在 EC2 上,域名是我在 Route 53 上购买的,然而,我在尝试建立与 WebSockets 的连接时遇到问题,我有一个使用 PHP Ratchet 库的聊天,默认情况下我使用端口 8080 在服务器和客户端之间建立连接,但是,由于我使用 SSL,端口 8080 不会生效,也就是说,我尝试使用几个端口,8443、8080、3000、8181、8282、4433,但它们都没有真正起作用,因为 Google 控制台报告失败:WebSocket 打开握手超时错误。好吧,我真的不知道问题出在服务器上还是客户端上,我认为是客户端上,因为 php 脚本运行完美,但不接受连接。我还在我的 EC2 机器的安全组中启用了我提到的所有这些端口,但错误仍然存在,嗯,这是涉及 Let's Encrypt 的问题吗?我应该编辑 SSL 文件以通过 WebSocket 建立连接吗?还是我应该编辑 httpd.conf?我真的不知道该怎么办,我相信我的代码一切正常,但是,什么都不起作用顺便说一句,现在当我尝试使用端口 8443 时,PHP 脚本说该端口已在使用中,我已经尝试使用命令停止正在运行的进程fuser-k 8443/tcp,但进程没有停止,那么,SSL 唯一可用的备用端口是 8443 吗?还有其他端口吗?如果没有,我该如何停止端口正在运行的进程我真的需要帮助,我是一个初学者,对我来说这变得非常复杂,因为我总是尝试新事物,但总是出错
詹姆斯:
var conn = new WebSocket('wss://example.com:4433/welcome.php'); //Using port 4433, it doesn't works as any port, I already tried a lot of ports
PHP的:
<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use Anne\Socket\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
4433
);
$server->run();
Google 控制台:
与“mysite”的 WebSocket 连接失败:WebSocket 打开握手超时
AWS 安全组:
Ports Protocol Source SecurityGroup
80 tcp 0.0.0.0/0, ::/0 ✔
8080 tcp 0.0.0.0/0, ::/0 ✔
4433 tcp 0.0.0.0/0, ::/0 ✔
22 tcp 0.0.0.0/0 ✔
8443 tcp 0.0.0.0/0, ::/0 ✔
3000 tcp 0.0.0.0/0 ✔
443 tcp 0.0.0.0/0, ::/0 ✔