Home  >  Article  >  Backend Development  >  failed: Error during WebSocket handshake: Invalid status line

failed: Error during WebSocket handshake: Invalid status line

WBOY
WBOYOriginal
2016-06-06 20:31:582044browse

实验socket的时候总是报上面的错误
服务器端用的是php代码:

<code>error_reporting(E_ALL);
    set_time_limit(0);
    //ob_implicit_flush();
    $address = '127.0.0.1';
    $port = 10005;
    //创建端口
    if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
        echo "socket_create() failed :reason:" . socket_strerror(socket_last_error()) . "\n";
    }
    //绑定
    if (socket_bind($sock, $address, $port) === false) {
        echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
    }
    //监听
    if (socket_listen($sock, 5) === false) {
        echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
    }
    do {
        //得到一个链接
        if (($msgsock = socket_accept($sock)) === false) {
            echo "socket_accepty() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
            break;
        }
        //welcome  发送到客户端
        $msg = "<font color="red">server send:welcome</font><br>";
        socket_write($msgsock, $msg, strlen($msg));
        echo 'read client message\n';
        $buf = socket_read($msgsock, 8192);
        $talkback = "received message:\n$buf\n";
        echo $talkback;
        if (false === socket_write($msgsock, $talkback, strlen($talkback))) {
            echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) . "\n";
        } else {
            echo 'send success'.PHP_EOL;
        }
        socket_close($msgsock);
    } while (true);
    //关闭socket
    socket_close($sock);
</code>
<code>客户端是用html5的socket接口,代码如下:
</code>
<code>ws = new WebSocket("ws://127.0.0.1:10005");
        ws.onopen = function() {
            //var relogin_data = JSON.stringify({"type":"re_login","client_name":"aaaaa"});
            ws.send('aaaaaaaaa');
        };
          ws.onmessage = function(e) {
            console.log(e);
          };
          ws.onclose = function() {
              console.log("onclose");
          };
          ws.onerror = function() {
              console.log("onerror");
          };
</code>

回复内容:

实验socket的时候总是报上面的错误
服务器端用的是php代码:

<code>error_reporting(E_ALL);
    set_time_limit(0);
    //ob_implicit_flush();
    $address = '127.0.0.1';
    $port = 10005;
    //创建端口
    if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
        echo "socket_create() failed :reason:" . socket_strerror(socket_last_error()) . "\n";
    }
    //绑定
    if (socket_bind($sock, $address, $port) === false) {
        echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
    }
    //监听
    if (socket_listen($sock, 5) === false) {
        echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
    }
    do {
        //得到一个链接
        if (($msgsock = socket_accept($sock)) === false) {
            echo "socket_accepty() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
            break;
        }
        //welcome  发送到客户端
        $msg = "<font color="red">server send:welcome</font><br>";
        socket_write($msgsock, $msg, strlen($msg));
        echo 'read client message\n';
        $buf = socket_read($msgsock, 8192);
        $talkback = "received message:\n$buf\n";
        echo $talkback;
        if (false === socket_write($msgsock, $talkback, strlen($talkback))) {
            echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) . "\n";
        } else {
            echo 'send success'.PHP_EOL;
        }
        socket_close($msgsock);
    } while (true);
    //关闭socket
    socket_close($sock);
</code>
<code>客户端是用html5的socket接口,代码如下:
</code>
<code>ws = new WebSocket("ws://127.0.0.1:10005");
        ws.onopen = function() {
            //var relogin_data = JSON.stringify({"type":"re_login","client_name":"aaaaa"});
            ws.send('aaaaaaaaa');
        };
          ws.onmessage = function(e) {
            console.log(e);
          };
          ws.onclose = function() {
              console.log("onclose");
          };
          ws.onerror = function() {
              console.log("onerror");
          };
</code>

服务端改成swoole_websocket_server

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn