2012-09-08 4 views
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(); 
} 
+0

닫힘 - 에러 MY JS에 있었던, 로그 함수! –

+0

질문에 대한 답변을 게시하고이 답변에 동의 함으로 표시하십시오. – Jocelyn

답변

0

문제는 자바 스크립트에있었습니다. 올바른 JS이이었던 것에 올바르게 행동 에러 던지고하지

제거 로그 방식으로
alert("Connecting to server now"); 

function init(){ 
    var host = "ws://localhost:10020/websocket/Server.php"; 

    try{ 
    socket = new WebSocket(host); 
    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(); 
} 

이다 ...

관련 문제