Постоянное подключение websocket к действующему серверу

#php #codeigniter #sockets #websocket #opensuse

#php #codeigniter #сокеты #websocket #opensuse

Вопрос:

Я внедрил rachet websocket с помощью codeigniter, и он отлично работает на локальном хостинге. Это основной server.php что нам нужно запустить из терминала / cmd

 require __DIR__ . "/../vendor/autoload.php";

use ChatChat;

use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;

$server = IoServer::factory(new HttpServer(new WsServer(new Chat)), 2000);

$server->run();
 

Я запускаю этот файл из cmd со следующей командой

 D:wampwwwmy_projectapiapplicationthird_partyRealtimebin server.php
 

Эта команда запускает сокет, и теперь любой пользователь получает доступ к моему сайту через браузер, затем они подключаются к сокету, и я могу отправить ему сообщение. Когда я закрываю терминал / cmd, сокет закрывается автоматически.

Теперь моя разработка завершена, и я загружаю весь исходный код на сервер «openSUSE». Итак, мой вопрос в том, как я запускаю выше server.php файл на живом сервере ? (например, amazon ec2 openSUSE server). потому что на сервере нет терминала / cmd.

Также это должно выполняться постоянно, поэтому каждый раз, когда любой пользователь обращается к моему сайту, он подключается к серверу, и я отправлю ему сообщение.

Я пробую много способов, но это никак не работает.

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

1. Посмотрите здесь: socketo.me/docs/deploy

2. Спасибо @AlokPatel, я реализую это и попытаюсь исправить свою проблему, я прокомментирую здесь, если возникнут какие-либо проблемы с вашей ссылкой.

3. @AlokPatel подскажите, пожалуйста, как я могу установить постоянное соединение в localhost? Я использую wamp (Windows). Я хочу сделать это без команды запуска в cmd и расписания задач. Есть какой-нибудь способ установить любой конфигурационный файл?

4. Если вы разрабатываете, лучше использовать cmd. Это поможет вам просматривать журналы и отлаживать.

5. @AlokPatel я ссылаюсь на ваш данный документ и выполняю шаги. Пожалуйста, посмотрите ответы, приведенные мной ниже, я не могу добавить сюда длинный комментарий 🙂

Ответ №1:

после установки haproxy я создаю confing-файл 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, теперь я не могу понять, какую службу нужно отключить.