php - не удалось: ошибка во время рукопожатия WebSocket: net::ERR_INVALID_HTTP_RESPONSE

Я использую сокет php на стороне сервера и HTML5 WebSocket на стороне клиента.
Мой код на стороне клиента работает хорошо, потому что я попробовал его с http://www.websocket.org/echo.html и это сработало. Но проблема в server.php файл. может быть что-то не так с socket_write

Это на стороне клиента index.php файл

<!Doctype html>
<html>
    <head>
        <meta charset='utf-8'/>
        <title>Websocket Chat</title>
        <style>

        </style>
    </head>
    <body>
            <h1 class='title'>Chat with websocket and php socket</h1>
            <p id='status'>Connecting..</p>
            <ul id='messages'></ul>
            <form id='message-form'>
                <input type='text' name='message'/>
                <input type='submit' value='Send'/>
                <input type='button' value='Close connection' id='close'/>
            </form>
            <script>
                var socStatus = document.getElementById("status");
                var socket = new WebSocket("ws://localhost:1675/server.php");
                socket.onopen = function(e){
                    console.log("sdfdf");
                    socStatus.innerHTML = "Connected to: " + e.currentTarget.url;
                    socStatus.class = 'open';
                }
                socket.onerror = function(err){
                    socStatus.innerHTML = 'There was an error';
                    socStatus.class = 'error';
                    console.log(err);
                }
                document.getElementById("message-form").onsubmit = function(){
                    socket.send(this.querySelector("input[name='message']").value);
                    document.getElementById("messages").innerHTML += '<li class="sent">' + this.querySelector("input[name='message']").value + '</li>';
                    return false;
                }
                socket.onmessage = function(e){
                    console.log("sdfdf");
                    document.getElementById("messages").innerHTML += '<li class="sent">' + e.data + '</li>';
                }
                document.getElementById("close").onclick = function(){
                    socket.close();
                }
                socket.onclose = function(){
                    socStatus.innerHTML = "socket Closed";
                    socStatus.class = 'closed';
                }
            </script>
    </body>
</html>

Это server.php файл

<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$server = '127.0.0.1';
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
$port = 1675;
socket_bind($socket, $server, $port);
socket_listen($socket, 20);
echo "Socket is listening..";
while(true){
    $client = socket_accept($socket); 
    echo "Client connected";
    $input = socket_read($client, 1024 * 1024);
    $response = trim($input);
    socket_write($client, $response, strlen($response));
    socket_close($client);
}
socket_close($socket);

0 ответов

Другие вопросы по тегам