我确实需要有关 websockets 的帮助,最近我在 ec2 中的网站中使用了 SSL(Let's Encrypt),并且我使用路由 53 进行路由,并且该网站可以完美地与 SSL 和我的 DNS 配合使用,但我无法启动与 WebSockets 和 HTTPS 的连接,它只能与 HTTP 配合使用,使用端口 8080,当我尝试在端口 8443 下启动与 HTTPS 的连接时,Google 控制台显示:
与“mysite”的 WebSocket 连接失败:WebSocket 打开握手超时
我真的不知道该怎么办了,在我看来,编码部分一切都没问题,但它看起来真的是一个涉及 Apache 和 SSL 的问题,请帮帮我,我被这个问题困扰了 2 周,我不知道该怎么办
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 ✔
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()
)
),
8433
);
$server->run();
詹姆斯:
var conn = new WebSocket('wss://example.com:8433/chat.php'); //Using port 8433, it doesn't works as any port, I already tried a lot of ports
阿帕奇
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName "example.com"
ServerAlias "www.example.com"
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
ProxyPreserveHost On
ProxyPass /chat.php/ ws://example.com:8433/
ProxyPassReverse /chat.php/ ws://example.com:8433/
</VirtualHost>