Я пытаюсь создать сервер WebSocket с Ratchet PHP и подключиться к нему через JavaScript.
PHP:
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
), 8080
);
echo("Address: " . $server->socket->getAddress() . "\n");
$server->run();
JS (клиент):
<script>
var conn = new WebSocket('ws://example.com:8080/socket/sockets/Chat.php');
conn.onopen = function(e) {
console.log("Connection established!");
conn.send('Hello World!');
};
conn.onmessage = function(e) {
console.log(e.data);
};
</script>
И это работает нормально, или, по крайней мере, будет, если мое соединение не будет HTTPS, поэтому протокол WS не принимается (firefox говорит Uncaught DOMException: The operation is insecure
). Итак, я пытаюсь сделать это с помощью WSS, как здесь https://stackoverflow.com/a/28393526/15411013 , но у меня нет доступа ни к SSH, ни к файлу httpd.conf. Я сделал это на своем компьютере локально, и все работало нормально, просто у меня есть этот доступ, и мне нужно, чтобы он работал на сервере.
Можно ли сделать прокси без этого доступа? В файле htdocs или где-то еще? Я пытался добавить htaccess с кодом, найденным в Интернете:
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://example.com:8080/socket/sockets/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*) http://example.com:8080/socket/sockets/$1 [P,L]
но это, похоже, не работает. Спасибо за помощь