Я пытаюсь создать видеочат, используя храповик с 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 Я собираюсьпопробовать завтра