Я пытаюсь создать свой первый простой 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 ..
Любая помощь ценится!Спасибо!