Javascript WebSocket失败
我尝试使用WebSocket创建服务器。 我发送了一个密钥来回复,但套接字仍然不接受连接 到“ws://sigame:8640/”的WebSocket连接失败:WebSocket握手期间出错:net::ERR\u无效\u HTTP\u响应 server.phpJavascript WebSocket失败,javascript,php,websocket,Javascript,Php,Websocket,我尝试使用WebSocket创建服务器。 我发送了一个密钥来回复,但套接字仍然不接受连接 到“ws://sigame:8640/”的WebSocket连接失败:WebSocket握手期间出错:net::ERR\u无效\u HTTP\u响应 server.php <? $host = "sigame"; $port = "8640"; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); so
<?
$host = "sigame";
$port = "8640";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
$res = socket_bind($socket, "0", $port);
$res = socket_listen($socket);
echo "Listen\n";
do {
$accept = socket_accept($socket);
echo "accepted\n";
$msg = socket_read($accept, 2048);
echo $msg;
$temp = preg_split("~\r\n~", $msg);
$headers = array();
foreach ($temp as $line) {
$line = rtrim($line);
if (preg_match('~\A(\S+): (.*)\z~', $line, $matches)) {
$headers[$matches[1]] = $matches[2];
}
}
$key = $headers['Sec-WebSocket-Key'];
$hash = $key.'258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
$hash = sha1($hash,true);
$sKey = base64_encode($hash);
$headersResp = "
HTTP/1.1 101 Switching Protocols\n\r
Upgrade: websocket\n\r
Connection: Upgrade\n\r
Sec-WebSocket-Accept: $sKey\n\r
";
echo $headersResp;
socket_write($accept, $headersResp);
} while(true);
socket_close($socket);
?>
客户端
<script type="text/javascript">
const socket = new WebSocket('ws://sigame:8640');
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
});
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
socket.onerror = function(event)
{
console.log(event);
console.log(event.message);
}
</script>
constsocket=newwebsocket('ws://sigame:8640');
socket.addEventListener('open',函数(事件){
send('Hello Server!');
});
socket.addEventListener('message',函数(事件){
console.log('来自服务器的消息',event.data);
});
socket.onerror=函数(事件)
{
console.log(事件);
console.log(事件消息);
}
控制台:
我使用OpenServer、PHP7.1、Apache2.4
我哪里出错了?我怎样才能解决这个问题