0
지난 몇 시간 동안 웹 소켓과 싸워 왔고 너무 연결할 수 없습니다!Websocket이 연결을 열지 못합니다.
이GET /websocket/Server.php HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:10020
Origin: http://localhost:8888
Sec-WebSocket-Key: fWN5C0N5EqQ/EnYET9C8DQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
Cookie: SQLiteManager_currentLangue=2
MY RESPONSE:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: P3XPDvAuKuz0RoHKq8oDrGHRM9c=
내가 응답을 작성하는 데 사용하는 PHP 함수는 다음과 같습니다 :
은이는 핸드 쉐이크 프로토콜이다가 오류와 함께 제공되지 않습니다
내 콘솔에서function handle13Protocol($req){
$info = array();
$MAGICSTRING = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
if(preg_match("/GET (.*) HTTP/" ,$req,$match)){ $info["GET"]=$match[1]; }
if(preg_match("/Host: (.*)\r\n/" ,$req,$match)){ $info["HOST"]=$match[1]; }
if(preg_match("/Origin: (.*)\r\n/",$req,$match)){ $info["ORIGIN"]=$match[1]; }
if(preg_match("/Sec-WebSocket-Key: (.*)\r\n/",$req,$match)){ $info["KEY"]=$match[1]; }
if(preg_match("/\r\n(.*?)\$/",$req,$match)){ $data=$match[1]; }
echo "key = ".$info["KEY"]."\n";
$acceptKey = base64_encode(sha1($info["KEY"].$MAGICSTRING,true));
$upgrade = "HTTP/1.1 101 Switching Protocols\r\n" .
"Upgrade: websocket\r\n" .
"Connection: Upgrade\r\n" .
"Sec-WebSocket-Accept: $acceptKey".
"\r\n\r\n" ;
echo $upgrade;
return $upgrade;
}
, 그것은 말한다 소켓이 분리되지 않습니다.
아직 내 자바 스크립트가 내 연결 즉 onopen 기능을 확인하지 않습니다. 나는이 복사 및 붙여 넣기 섹션에 올바른 js가 있는지 확인하기 위해 시도했습니다.
alert("Connecting to server now");
function init(){
var host = "ws://localhost:10020/websocket/Server.php";
try{
socket = new WebSocket(host);
log('WebSocket - status '+socket.readyState);
socket.onopen = function(msg){ alert("opened!"); };
socket.onmessage = function(msg){ log("Received: "+msg.data); };
socket.onclose = function(msg){ log("Disconnected - status "+this.readyState); };
}
catch(ex){ log(ex); }
$("msg").focus();
}
닫힘 - 에러 MY JS에 있었던, 로그 함수! –
질문에 대한 답변을 게시하고이 답변에 동의 함으로 표시하십시오. – Jocelyn