Хобрук: Ваш путь к мастерству в программировании

WebSocket с SSL без доступа к httpd.conf

Я пытаюсь создать сервер 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]

но это, похоже, не работает. Спасибо за помощь


  • Кстати, мой сервер использует LiteWebSpeed, а не apache. 17.04.2021

Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..