Простой веб-сокет на php

Я хочу реализовать простой веб-сокет на php с простым ответом (ответ по дате / времени). Я пробовал эту реализацию, но в итоге получил неизвестный ответ об ошибке.

HTML - Клиент

<html>
<body>
  <div id="root"></div>
  <script>
    var host = 'wss://myWebsite.com:8090/simple-ws/ws.php';
    var socket = new WebSocket(host);
    socket.onmessage = function(e) {
        document.getElementById('root').innerHTML = e.data;
    };

    socket.onerror = function(e) {
        console.warn('Error FE', e)
    };

  </script>
  </body>
</html>

PHP - Сервер

<?php

try {

    $address = 'https://myWebsite.com/';
    $port = 8090;

    // Create WebSocket.
    $server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_set_option($server, SOL_SOCKET, SO_REUSEADDR, 1);
    socket_bind($server, $address, $port);
    socket_listen($server);

    $client = socket_accept($server);
    // Send WebSocket handshake headers.
    $request = socket_read($client, 5000);
    preg_match('#Sec-WebSocket-Key: (.*)\r\n#', $request, $matches);
    $key = base64_encode(pack(
        'H*',
        sha1($matches[1] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')
    ));
    $headers = "HTTP/1.1 101 Switching Protocols\r\n";
    $headers .= "Upgrade: websocket\r\n";
    $headers .= "Connection: Upgrade\r\n";
    $headers .= "Sec-WebSocket-Version: 13\r\n";
    $headers .= "Sec-WebSocket-Accept: $key\r\n\r\n";
    socket_write($client, $headers, strlen($headers));

    // Send messages into WebSocket in a loop.
    while (true) {
        sleep(1);
        $content = 'Now: ' . time();
        $response = chr(129) . chr(strlen($content)) . $content;
        socket_write($client, $response);
    }

} catch (Exception $e) {
    echo 'Error on ws'.$e;
}

?>

Через 4-6 секунд получаю ответ:

Соединение WebSocket с 'wss: //myWebsite.com: 8090 / simple-ws / ws.php' не выполнено: ошибка при установлении соединения: net :: ERR_CONNECTION_TIMED_OUT

Ответ об ошибке от обратного вызова onerror:

{
  bubble: false,
  cancelBubble: false,
  cancelable: false,
  type: "error",
  target: WebSocket {url: "wss://myWebsite.com:8090/simple-ws/ws-php", readyState: 3}
}

person que1326    schedule 19.01.2018    source источник
comment
Я подозреваю, что вы не запускали PHP-скрипт, поэтому ваш сервер WebSocket даже не работает.   -  person gre_gor    schedule 19.01.2018
comment
Я захожу на myWebsite.com/path_to_ws/ws.php, но получаю ту же ошибку ...   -  person que1326    schedule 21.01.2018
comment
Это не то, как вы запускаете сервер WebSocket.   -  person gre_gor    schedule 22.01.2018
comment
В режиме разработки (xampp отлично работает) мне не нужна строчная команда для этого.   -  person que1326    schedule 23.01.2018
comment
Вы можете попробовать добавить set_time_limit (0); в начало вашего PHP-скрипта, чтобы он не истек. Вы также можете проверить, есть ли у вас на это разрешение.   -  person DasBaconfist    schedule 01.02.2018