Как открыть wss: или ws: порт на моем сайте?

#php #websocket #server #port

#php #веб- сокет #сервер #порт #websocket

Вопрос:

Я использую Ratchet-lib/socketo.me в качестве веб-сокета для моего приложения для чата. Когда я ставлю localhost: 8080, он работает отлично.

Как я могу поместить свой веб-сайт как wss:// при публикации приложения в Интернете? Как открыть порт pr smthg?

Это код подключения :

 $(document).ready(function(){
   update_chat_history_data();
    var conn = new WebSocket('wss://localhost:8080');
conn.onopen = function(e) {
    console.log("Connection established!");
};
  

Я хочу изменить var conn = new WebSocket(‘wss://localhost:8080’); с помощью var conn = new WebSocket(‘wss://mywebsite:port’);

Спасибо

Комментарии:

1. Итак … что мешает вам изменить его? Я не понимаю проблему. Вы развернули PHP-код на сервере своего веб-сайта и запустили его?

2. я новичок в websockets, так что… все, что я пытаюсь сделать, это когда я тестирую приложение для обмена сообщениями на локальном хосте с сервером, работающим с композитором, все отлично! теперь я опубликовал свой веб-сайт в Интернете, как я могу запустить сервер или запустить его? я попытался указать свое доменное имя вместо локального хоста, и на нем написано «сбой: соединение закрыто до получения ответа на рукопожатие»

3. composer — это менеджер пакетов, он не запускает серверы, я не знаю, что вы под этим подразумеваете. Вы заставляете сайт работать так же, как вы запускаете его на своем локальном хостинге (предполагая, что вы сделали это из командной строки ??) — как в демо-версии ratchet: socketo.me/docs/hello-world

4. да , именно так ! я использовал командную строку для локального хоста!

5. Хорошо, вам нужно сделать то же самое на сервере вашего веб-сайта. (Однако, если вы купили дешевый виртуальный хостинг, у вас может не быть разрешения на это. Возможно, вам понадобится настройка VPS или облака.)

Ответ №1:

Если вы используете nginx в своей производственной среде, и по умолчанию в нем включен ssl (https). Чем вы можете сделать обратный прокси для своего сервера ratchet.

 upstream websocketserver {
    server ratchet:8080;
} 

server {

listen 443 ssl;
#you main domain configuration

location /ws/ {
            proxy_pass http://websocketserver;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_read_timeout 86400; # neccessary to avoid websocket timeout disconnect
            proxy_redirect off;
    }
  

}

Затем вы сможете использовать URL-адрес ratchet, например: wss://yourdomain.com/ws

Вот как это работает с nginx, но у меня то же самое с apache или каким-либо другим веб-сервером. Просто сделайте обратный прокси!

Комментарии:

1. Он хорошо работает как микросервис. Допустим, у вас есть контейнер с nginx, а другой с ratchet.

2. эй, братан, я не мог понять, куда поместить этот код… можете ли вы рассказать мне, что делать шаг за шагом? должен ли я написать это в моем server.php или где ?

3. Привет, нет, это конфигурация сервера. Сначала вы можете сказать мне, используете ли вы nginx или другой сервер?

4. как я уже сказал, я все еще изучаю материал, я не могу понять, что вы подразумеваете под nginx, но теперь я использую бесплатный хостинг, чтобы попробовать мое приложение, затем ytb vid, чтобы установить ratchet и заставить его работать, его работа выполнена на моем локальном хостинге (xampp) с композитором, запускающим server.php (php server.php), теперь мне интересно, после того, как я опубликовал свой веб-сайт, как я могу получить ws или wss, которые могут запускать мое приложение для общения в чате .. я попробовал wss://echo.websocket. org но он работает нормально, но какая-то переменная из моих данных json отображается как неопределенная..

5. С бесплатным хостингом вы мало что можете сделать. Я предположил, что у вас есть доступ к серверам ur. Под этим я подразумеваю возможность настройки сервера, на котором размещен ваш веб-сайт. Что такое бесплатное доменное имя и что происходит, когда вы запускаете php serve.php на этом бесплатном хостинге ?