Я реализовал rachet websocket с codeigniter, и он отлично работает в localhost. Это основной server.php, который нам нужно запустить из терминала / cmd
require __DIR__ . "/../vendor/autoload.php";
use Chat\Chat;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
$server = IoServer::factory(new HttpServer(new WsServer(new Chat)), 2000);
$server->run();
Я запускаю этот файл из cmd с помощью следующей команды
D:\wamp\www\my_project\api\application\third_party\Realtime\bin server.php
Эта команда запускает сокет и теперь любой пользователь получает доступ к моему сайту через браузер, после чего он подключается к сокету, и я могу отправить ему сообщение. Когда я закрываю терминал / cmd, сокет закрывается автоматически.
Теперь моя разработка завершена, и я загружаю весь исходный код на сервер «openSuse». Итак, мой вопрос, как я запускаю выше файл server.php на живом сервере? (например, сервер Amazon Amazon ECS OpenSuse). потому что на сервере нет терминала / cmd.
Также это должно выполняться постоянно, поэтому каждый раз, когда любой пользователь получает доступ к моему сайту, он подключается к серверу, и я отправляю ему сообщение.
Я стараюсь по-разному, но это никак не работает.
после установки haproxy я создаю файл конфинга haproxy.cfg
в /etc
каталог
В этом файле я установил
backend ws
server ws1 my_public_ip:2000
backend www
timeout server 30s
server www1 my_public_ip:80
Вот port 2000
является websocket
порт и port 80
мой порт apache
Я тоже попробую с 127.0.0.1
но это дает следующую ошибку
[ALERT] 293/101352 (2291) : Starting frontend public: cannot bind socket [0.0.0.0:80]
После пропуска этой ошибки я создаю supervisor.conf
файл в /etc/
каталог и добавить программу rachet по вашей указанной ссылке
Здесь в команде я дал полный путь к файлу server.php
command = bash -c "ulimit -n 10000; exec /usr/bin/php /srv/www/htdocs/ci_chat/application/third_party/Realtime/bin/server.php"
Но это дает мне следующую ошибку
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
Мой Apache работает на порту 80
pgsql работает на 5432
Теперь я не могу понять, какой сервис необходимо отключить.
Других решений пока нет …