Прежде всего, попробуйте упростить вещи, НЕ редактировать и не трогать какие-либо файлы конфигурации с сервера, оставить его по умолчанию, как есть, что будет делать
Я опубликую все меры предосторожностиДля того, чтобы настроить и запустить сокет, выполните следующие действия:
Проверьте, поддерживает ли ваш сервер веб-сокет на виртуальном хостинге, в противном случае вам может понадобитьсяперейти на выделенный хостинг или виртуальный частный сервер (VPS), например: AWS, GCP. Если ваш сервер поддерживает запуск сценариев веб-службы, таких как phpwebsocket, внутри веб-службы, выполните следующие действия
На терминале обновите композитор до последней версии, а затем попробуйте выполнить $composer require cboden/ratchet
Так что требуемая зависимость будет загружаться эффективно и не пытаться загружать какие-либо заархивированные зависимости. В моем случае "cboden/ratchet": "^0.4.3"
был загружен на localhost, но на производственном сайте он был "cboden/ratchet": "^0.4.1"
при сравнении как из composer.json
файла
Попробуйте подключиться к порту 8282, ВВ большинстве случаев трафик сервера, как от входящего, так и от исходящего, остается открытым по умолчанию, в случае, если порт 8080 не может привязаться к TCP
Наконец, попробуйтеперезагрузите свой экземпляр сервера, размещенного в облаке, и выполните сценарий websocket $php <yourWebSocketScript.php>
Я использовал mod_proxy_wstunnel
, чтобы убедиться, что связь зашифрована, кроме этого, я смогбез проблем запустите Websocket socketo.me на AWS и на нашем частном выделенном сервере
Спасибо за обращение, я ценю ваши усилия, кроме вашего заинтересованного комментария, чтобы ответить через johannchopin @ protonmaildotcom, это не моя частьделовой этики
Редактировать
$app = new Ratchet\App('localhost', 8888);
$app->route('/wss/homews/', $myClass, array('*'));
$app->run();
Попробуйте изменить назначенное вручную localhost
с вашего <yourWebSocketScript.php>
из приведенного выше фрагмента на
$app = IoServer::factory(
new HttpServer(new WsServer(new Chat())),
8282
);
$app->run();
Попробуйте связать с HttpServer
, по умолчанию это localhost
или 0.0.0.0
и запустите (при необходимости исключите $app->route()
)
В вашем коде вам нужно изменить
Номер порта в yourWebSocketScript.php
Изменение с localhost
на IP-адрес сервера или DNS в someChatFilexyz.php
Eg:
let websocket_server = new WebSocket("ws://my.domain.com:8282");
or
let websocket_server = new WebSocket("ws://xxx.xxx.xxx.xxx:8282");
Убить все ранее установленные сокеты, относящиеся к порту 8282, а затем запустить
yourWebSocketScript.php
Вот частичный код someChatFilexyz.php
jQuery(function($){
// Websocket_Controller
var websocket_server = new WebSocket("ws://xxx.xxx.xxx.xxx:8282");
websocket_server.onopen = function(e) {
websocket_server.send(
...
);
};
websocket_server.onerror = function(e) {
// Errorhandling
...
}
websocket_server.onmessage = function(e) {
...
}
}
Настройка вышеКонфигурацию я смог запустить на веб-службе Amazon с настроенным мной стеком LAMP и с частным выделенным сервером с легкостью.
Примечание. При любых незначительных изменениях в коде необходимо перезапустить работающий скрипт websocket $php <yourWebSocketScript.php>
т. Е. Либо путем завершения запущенного процесса, либо уничтожения процесса, определенного для назначенного номера порта