Ratchet Websocket не работает с Godaddy SSL на выделенном сервере Godaddy, Laravel - PullRequest
0 голосов
/ 08 февраля 2019

Я работаю над проектом живого чата Ratchet (http://socketo.me/) в Laravel. У меня все работает нормально, но после установки SSL-сертификата на мой домен веб-сокет не соединяется с сервером веб-сокетов. Я собрал cpanel с WHMсамостоятельно на выделенном сервере и установите требуемые модули.

Код моего файла server.php для запуска на порту сервера:

     $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new ChatSocket()
            )
        ),
        8080
    );

    $server->run();

Мой класс ChatSocket, в котором выполняется весь код, сохранитеи получить данные:

class ChatSocket implements MessageComponentInterface {

      protected $clients;

      public function __construct() {
            $this->clients = new \SplObjectStorage;
      }

      public function onOpen(ConnectionInterface $conn) {
            //store the new connection
            $this->clients->attach($conn);

            echo "someone connected\n";
      }

      public function onMessage(ConnectionInterface $from, $msg) {
           //send the message to all the other clients except the one who sent.
           foreach ($this->clients as $client) {
                if ($from !== $client) {
                      $client->send($msg);
                }
           }
      }

      public function onClose(ConnectionInterface $conn) {
           $this->clients->detach($conn);
           echo "someone has disconnected";
      }

      public function onError(ConnectionInterface $conn, \Exception $e) {
           echo "An error has occurred: {$e->getMessage()}\n";
           $conn->close();
      }
}

, когда я пытаюсь соединиться с http, как показано ниже, код работает нормально для меня.

var conn = new WebSocket('ws://mydomain.com:8080');

, но когда я внедряю SSL-сертификат и меняю ws: // to wss: // тогда это не работает для меня, как показано ниже,

var conn = new WebSocket('wss://mydomain.com:8080');

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

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<IfModule mod_proxy.c>
<IfModule mod_proxy_ajp.c>

     ServerName www.mydomain.com

     ProxyRequests On
     ProxyVia On

     ProxyPass /_ws_ ws://mydomain.com:8080
     ProxyPassReverse /_ws_ ws://mydomain.com:8080

</IfModule>
</IfModule>

После добавления я перезаписываюrtd httpd файл и перезапустите полный сервер, а также, чтобы убедиться, что сервер apache перезапущен.

Пожалуйста, помогите мне подключиться через websocket с SSL.

Мои вопросы,

  1. Мне не хватает чего-нибудь для реализации SSL?
  2. Есть ли способ проверить, работает ли ProxyPass правильно или нужен какой-либо модуль для загрузки, а затем попытаться использовать его?
  3. Для использования ProxyPassв Laravel, что-нибудь нужно определить в Laravel, или ProxyPass работает как свой собственный?
  4. Я устанавливаю WHM cpanel, и он также не работает с поддоменами, я что-то упустил при установке WHM cpanel на свой выделенныйсервер?
...