#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 на этом бесплатном хостинге ?