2012-01-03 5 views
3

문제점이 있습니다. WebSocket 서버를 구현하려면 서버가 클라이언트에 데이터를 보낼 수 없습니다 (Chrome 16). 예를 들어, "Hello"텍스트를 보내는 경우 서버는 데이터 프레임 "0x81 0x05 0x48 0x65 0x6c 0x6c 0x6f"를 클라이언트에 보내지 만 브라우저는 데이터를받을 수 없습니다. 이 코드가 잘못 되었습니까?WebSocket Server 데이터 프레이밍 (RFC6455)

sub getSendDataNoMask{ 
    my $dataStr="Hello"; 
    my @ret; 

    push(@ret,pack("H*","81")); 
    push(@ret,pack("H*","05")); 
    push(@ret,$dataStr); 

    return join("",@ret); 
} 
+0

'getSendDataNoMask'의 반환 값으로 무엇을하고 있는지 어떻게 말하고 있습니까? – mob

+0

반환 값은 다음과 같이 소켓 전송 데이터입니다. $ socket-> send (getSendDataNoMask()); 이 데이터 만 있으면 더 이상 없습니다 .... – Random

답변

0

Chrome Javascript 콘솔에서 어떤 오류가 발생합니까?

핸드 셰이크 코드도 게시하지 않았습니다 (문제가 발생할 가능성이 큽니다). 악수가 성공적으로 완료되었는지 확실합니까? 즉, 브라우저에서 onopen 이벤트를 얻었습니까?

var ws = WebSocket("ws://myhost:6080/websocket"); 
ws.onopen = function (e) { 
    console.log("connection opened"); 
}; 
ws.onmessage 
    console.log("Got data: " + e.data); 
}; 

opopen 이벤트가 없으면 핸드 셰이크가 성공적으로 완료되지 않습니다. onopen 이벤트를 사용하고 있다면 데이터를 반대 방향으로 보내고 페일 서버의 프레임을 보내고 디코딩 할 수 있는지 확인한 후 보내십시오.

+0

전체 코드 : http://ra.ndom.me/code/webSocket.txt – Random

+0

HTML 코드 : http://ra.ndom.me/code/test.html – Random

+0

@ 임의, 코드 주셔서 감사하지만 내 질문에 너무 대답 할 수 있습니다. 나는 당신의 코드를 테스트하기에 너무 바쁩니다. – kanaka

관련 문제