php - не удалось: ошибка во время рукопожатия WebSocket: net::ERR_INVALID_HTTP_RESPONSE
Я использую сокет php на стороне сервера и HTML5 WebSocket на стороне клиента.
Мой код на стороне клиента работает хорошо, потому что я попробовал его с http://www.websocket.org/echo.html
и это сработало. Но проблема в server.php
файл. может быть что-то не так с socket_write
Это на стороне клиента index.php
файл
<!Doctype html>
<html>
<head>
<meta charset='utf-8'/>
<title>Websocket Chat</title>
<style>
</style>
</head>
<body>
<h1 class='title'>Chat with websocket and php socket</h1>
<p id='status'>Connecting..</p>
<ul id='messages'></ul>
<form id='message-form'>
<input type='text' name='message'/>
<input type='submit' value='Send'/>
<input type='button' value='Close connection' id='close'/>
</form>
<script>
var socStatus = document.getElementById("status");
var socket = new WebSocket("ws://localhost:1675/server.php");
socket.onopen = function(e){
console.log("sdfdf");
socStatus.innerHTML = "Connected to: " + e.currentTarget.url;
socStatus.class = 'open';
}
socket.onerror = function(err){
socStatus.innerHTML = 'There was an error';
socStatus.class = 'error';
console.log(err);
}
document.getElementById("message-form").onsubmit = function(){
socket.send(this.querySelector("input[name='message']").value);
document.getElementById("messages").innerHTML += '<li class="sent">' + this.querySelector("input[name='message']").value + '</li>';
return false;
}
socket.onmessage = function(e){
console.log("sdfdf");
document.getElementById("messages").innerHTML += '<li class="sent">' + e.data + '</li>';
}
document.getElementById("close").onclick = function(){
socket.close();
}
socket.onclose = function(){
socStatus.innerHTML = "socket Closed";
socStatus.class = 'closed';
}
</script>
</body>
</html>
Это server.php
файл
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$server = '127.0.0.1';
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
$port = 1675;
socket_bind($socket, $server, $port);
socket_listen($socket, 20);
echo "Socket is listening..";
while(true){
$client = socket_accept($socket);
echo "Client connected";
$input = socket_read($client, 1024 * 1024);
$response = trim($input);
socket_write($client, $response, strlen($response));
socket_close($client);
}
socket_close($socket);