Храповик + AWS EC2 + SSL + ProxyPass -> Неверная строка состояния - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь создать видеочат, используя храповик с laravel, и он отлично работает на localhost, но когда я развернул его на экземпляре EC2, ему потребовалась некоторая настройка.Во-первых, я могу получить доступ к своему приложению с помощью HTTPS, оно работает нормально.Я могу подключиться к своему серверу Ratchet WebSocket через ws и HTTP, но HTTPS требует wss, и я не могу понять, как заставить его работать.Я использовал ProxyPass, так как он, кажется, является ответом для большинства людей: (etc / httpd / conf.d / ssl.conf)

ProxyPass / wss2 / ws: //fake-domain.us-east-2.elasticbeanstalk.com:8181/

И мой JS-код на стороне клиента: var socket = new WebSocket ('wss: //fake-domain.us-east-2.elasticbeanstalk.com/wss2/');

Но это возвращает: «Ошибка во время рукопожатия WebSocket: неверная строка состояния», и это даже ничего не меняет, если я запускаю свой сервер Ratchet или нет.

PHP-код (мне удалосьчтобы поместить это в команду laravel, чтобы было проще):

public function handle()
    {
        $server = IoServer::factory(
            new WsServer(
                new VideoController()
            ),
            8181
        );

        $server->run();
    }

Я могу telnet fake-domain.us-east-2.elasticbeanstalk.com 8181, он говорит, что это работает.Я увидел, что это может происходить из версии apache, поэтому я обновил свои версии apache и php: php -v = 7.2.8 httpd -v = 2.4.34 Я принимаю весь трафик в группах безопасности, и порты 80, 443 и 8181 открыты.

Чего мне не хватает?Спасибо;)

ОБНОВЛЕНИЕ: Я понял, что не запускаю сервер сокетов правильно, я забыл поставить «sudo» перед моей командой, но теперь это дает мне еще одну ошибку:

UnexpectedValueException  : $request can not be null

  at /var/app/current/vendor/cboden/ratchet/src/Ratchet/WebSocket/WsServer.php:109
    105|      * {@inheritdoc}
    106|      */
    107|     public function onOpen(ConnectionInterface $conn, RequestInterface $request = null) {
    108|         if (null === $request) {
  > 109|             throw new \UnexpectedValueException('$request can not be null');
    110|         }
    111|
    112|         $conn->httpRequest = $request;
    113|

ОБНОВЛЕНИЕ 2:

Я думаю, что я только что нашел решение, я думаю, что не правильно интегрировал Ratchet с Laravel, и, возможно, решение здесь: https://gist.github.com/Mevrael/6855dd47d45fa34ee7161c8e0d2d0e88 Я собираюсьпопробовать завтра

1 Ответ

0 голосов
/ 23 октября 2018

Я наконец нашел, как заставить это работать !!Это была просто ошибка в балансировщике нагрузки, порт 8181 был SSL, а когда я перешел на TCP, он работал !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...