WebSockets PHP - как получить сообщение от JS - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь создать свой первый простой websocket на чистом php без каких-либо фреймворков.Я успешно отправил сообщение от php нескольким клиентам, но теперь я хочу отправлять сообщения от js на php, но я всегда терплю неудачу.Можете ли вы сказать мне, что я делаю не так?Это мой php код:

$clients=array();
$address='127.0.0.1';
$port=9988;
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
//socket_set_option($socket,SOL_SOCKET,SO_REUSEADDR,1);
socket_bind($socket,$address,$port);
socket_listen($socket);
socket_set_nonblock($socket);

while(true){
    sleep(1);
    $newc=socket_accept($socket);
    if($newc!==false){
        //echo "Client ".$newc." has connected<br />\r\n";
        $clients[]=$newc;

        $request=socket_read($newc,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\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Accept: $key\r\n\r\n";
        socket_write($clients[count($clients)-1],$headers,strlen($headers));
    }

    foreach($clients as $client){
        $content='Now: '.time();
        $response=chr(129).chr(strlen($content)).$content;
        socket_write($client,$response);

        /*@socket_recv($socket,$buf,8192,0);
        echo "Client ".$client." has sent \"".$buf."\"<br />\r\n";*/
    }
}

, и это мой js код:

<html>
<body>
    <div id="root"></div>
    <script>
        var host='ws://127.0.0.1:9988/socket.php';
        var socket=new WebSocket(host);
        socket.onmessage=function(e){
            document.getElementById('root').innerHTML=e.data;
        };
        setInreval(function(){
            websocket.send(JSON.stringify({data:Math.random()*(max-min)+min}));
        },500)
    </script>
</body>
</html>

Как видите, я пытаюсь отправить случайное число в php от js, но не могу получить его вphp ..

Любая помощь ценится!Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...