Как настроить сервер WebSocket для принятия запроса на безопасное соединение - PullRequest
1 голос
/ 11 марта 2019

Перед применением ssl (я беру из cloudflare) мой веб-сайт загружается через http, и мое сокет-соединение устанавливается через ws, оно работает нормально, и соединение было успешно установлено.

conn = new WebSocket ('ws: // myDomain: 8090');

Но после применения ssl, когда мой сайт загружается через https, я использую wss (в противном случае выдает ошибку)

conn= новый WebSocket ('wss: // myDomain: 8090');

Теперь выдает ошибку

Соединение WebSocket с 'wss: // myDomain: 8090/ 'не удалось: ошибка при установлении соединения: net :: ERR_CONNECTION_TIMED_OUT

Сервер веб-сокетов запущен через порт 8090. Я также изменил порт на 9991, но безрезультатно.

Здеськод для сервера веб-сокетов

public function handle()
{
    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        8090
    );
    $server->run();
}

Я не настраиваю apache для запуска сервера веб-сокетов для принятия запроса безопасного соединения. Возможно, из-за этого я получаю ошибку.Это означает, что я отправляю запрос на безопасное соединение на небезопасный сервер веб-сокетов.Если я прав, вы можете сказать мне, как я настраиваю свой сервер веб-сокетов, чтобы он мог принимать запрос безопасного соединения.

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

Я попросил вас дать четкое решение, чтобы решить эту проблему. Я не использую nginx, я использую apache на Lampp.

Ответы [ 2 ]

0 голосов
/ 19 мая 2019

Кто-то решил мою проблему. Поэтому я публикую решение здесь, чтобы помочь другим. Я делал две ошибки.

  • Я использую SSL от cloudflare, что вызывает некоторые проблемы. Поэтому я покупаю платный SSL-сертификат.
  • Я не настраиваю свой сервер веб-сокетов для wss

Итак, вот код для настройки сервера веб-сокетов для wss в Laravel с помощью Ratchet

public function handle()
{

    $loop   = Factory::create();
    $webSock = new SecureServer(
        new Server('0.0.0.0:8090', $loop),
        $loop,
        array(
            'local_cert'        => '', // path to your cert
            'local_pk'          => '', // path to your server private key
            'allow_self_signed' => TRUE, // Allow self signed certs (should be false 
                                            in production)
            'verify_peer' => FALSE
        )
    );
    // Ratchet magic
    $webServer = new IoServer(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        $webSock
    );
    $loop->run();

}
0 голосов
/ 15 марта 2019

Cloudflare не работает с портом 8090, здесь - список портов, поддерживаемых cloudflare.

Также попробуйте http://sitemeer.com/#https://yourDomain:8090, чтобы увидеть, обслуживает ли ваш сервер + домен ssl

...