我做了一个简单的php代码来测试WebSocket,客户端连接没有问题,可以在没有探针的情况下接收数据,但是我不能从服务器发送数据到客户端,请更正我的代码,谢谢
服务器.php
$in = '';
$content = '';
$connected = 0;
while($in != "quit"){
if(!$connected){
$in=trim(fgets(STDIN));
$pos = strpos($in, 'Sec-WebSocket-Key:');
if($pos !== false){
$key = str_replace('Sec-WebSocket-Key: ','',$in);
$magic = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
$resp = shell_exec("echo -n $key$magic | openssl sha1 -binary | base64");
}
if($in == ""){
$head = "HTTP/1.1 101 Switching Protocols\r\n";
$head.= "Connection: Upgrade\r\n";
$head.= "Upgrade: websocket\r\n";
$head.= "Sec-WebSocket-Accept: $resp\r\n";
$head.= "\r\n";
echo $head;
$connected = 1;
}
}else{
sleep(3);
$hex = "810461626364"; //abcd
$byte = str_split($hex, 2);
$out = '';
foreach($byte as $b){
$out.= chr(hexdec($b));
}
echo $out;
}
}
输入终端:
ncat -l 12345 -c 'php -q server.php'
并将客户端连接到 localhost:12345