在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/PHP/ socket編程(server:PHP,client:js)

socket編程(server:PHP,client:js)

錯(cuò)誤信息:WebSocket connection to 'ws://127.0.0.1:8888/' failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE
請(qǐng)教下這是啥情況咋解決

service代碼


$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    echo 'server start';
    if(socket_bind($socket,"127.0.0.1",8888)==false){
        echo 'server bind fail:'.socket_strerror(socket_last_error());
    }
    if(socket_listen($socket,0) == false){
        echo 'server listen fail:'.socket_strerror(socket_last_error());
    }
    while (true){
        $accept=socket_accept($socket);
        if($accept!=false){
            $string=socket_read($accept,1024);
            echo 'server receive is :'.$string.PHP_EOL;//PHP_EOL為php的換行預(yù)定義常量
            if($string!=false){
                $return_string='server receive is :'.$string.PHP_EOL;
                $ret = socket_write($accept,$return_string,strlen($return_string));
                var_dump($ret);
            }else{
                echo 'socket_read is fail';
            }
            socket_close($accept);
        }
    }
    socket_close($socket);

client

<script>
    var ws = new WebSocket("ws://127.0.0.1:8888");
    ws.onopen = function (event) {
        console.log("open");
        ws.send("hello");
    };
    ws.onmessage = function (p1) {
        console.log(p1)
    };
    ws.onerror = function(evt)
    {
        console.log("WebSocketError!");
        console.log(evt);
    };
</script>
回答
編輯回答
壞脾滊

websocket!=socket

你PHP代碼中的socket是TCP_SOCKET,而js中的是websocket,websocket是基于http協(xié)議的。兩邊協(xié)議不對(duì),不能通信

2018年8月18日 09:11
編輯回答
菊外人

websocket消息返回錯(cuò)誤,websocket連接第一步是消息驗(yàn)證
服務(wù)端需要根據(jù)客戶端的Sec-WebSocket-Key生成Sec-WebSocket-Accept并按指定格式返回

clipboard.png

2017年4月13日 05:17