2011-09-02 3 views
1

event.data을 자바 스크립트를 사용하여 WebSocket에서 완전히 읽는 방법은 무엇입니까?onMessage의 스트림에서 완전한 데이터 읽기

onMessage: function(event) { 
var msg = event.data; 
alert(msg); 
} 

위의 코드에서 변수 msg은 부분 데이터 만 표시합니다. WebSocket 서버에서 전체 데이터를받는 방법?

답변

0

event.data에는 모든 정보가 들어 있습니다. 얼마나 많은 부분을 보느냐에 달려 있습니다. 경고 상자에는 특정 문자까지만 포함될 수 있습니다. 왜냐하면 더 많은 문자가 경고 상자에 들어 가지 않기 때문입니다. alert는 큰 데이터를 표시하는 데 적합하지 않습니다.

더 편리한 방법 즉 당신이 보낸 문자의 길이, 단지 정확한 길이이어야한다

onMessage: function(event) { 
    var msg = event.data; 
    alert(msg.length); 
} 

:, 길이를 예컨대을 길이를 저장하고 그것을 확인하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 경고 상자없이 다시 시도했지만, 이번에는 HTML 텍스트 상자에 "event.data"를 넣었습니다. 아직 데이터의 일부만 수신하고 있습니다. 데이터가 아닙니다. – osdevkid

+0

@osdevkid : 데이터의 양은 얼마입니까? 아마도 브라우저도 차이를 만듭니다. 여러 개의 'onmessage'호출을 받습니까? – pimvdb

0

WebSockets는 메시지 기반 전송입니다. 서버가 "스트림"을 여러 개의 메시지 청크로 나눈 경우 몇 개의 메시지 이벤트가 수신되며 첫 번째 메시지 이벤트에는 예상되는 모든 데이터가 없을 것입니다.

또한 WebSocket 정의에서는 전체 메시지에 대해 onmessage 처리기를 호출해야합니다. 브라우저의 WebSocket 구현이 손상되지 않는 한 부분적인 메시지를 얻을 수 없습니다.

alert() 대신 비동기식으로 시도하여 수신 한 메시지를 기록합니다. 예를 들어 Firebug 또는 Chrome Javascript 콘솔이있는 경우 console.log()를 사용하십시오. HTML 텍스트 상자에 메시지 데이터를 누적하거나 메시지를받을 때 메시지 데이터를 덮어 쓰시겠습니까?

관련 문제