2016-09-06 6 views
0

저는 javascript에 상당히 익숙하며 기초 만 알고 있습니다. init 함수가 호출되면 누구나 다음 코드를 설명 할 수 있습니까?누구나 다음 코드를 설명 할 수 있습니까?

다음 코드는 일단 init 함수가 호출되면 id 출력으로 HTML 요소에 매핑되는 전역 변수 출력을 설정한다는 것입니다. 그런 다음 testWebSocket javascript function을 호출합니다. 이렇게하면 WebSocket 객체가 만들어집니다. 이 부분은 내가 완전히 이해하지 못하는 부분입니다.

아래 내용에 대한 이해가 정확하면 나를 수정하십시오. 라인 websocket.open = function(evt) { onOpen(evt) };에서

는 웹 소켓 객체는 우리가

function(evt) { onOpen(evt) };에 의해 반환되는 무엇으로 설정하는 열린라는 이름의 속성이 있습니다.

이 대가로이 함수는 onOpen javascript 함수를 호출합니다.

function onOpen(evt) { 
    writeToScreen("CONNECTED");doSend("WebSocket rocks"); 
} 

이것은 onSend javascript 기능에 대한 호출이 있습니다.

function doSend(message) { 
    writeToScreen("SENT: " + message);websocket.send(message); 
} 

그럼 첫 번째 질문은 WebSocket object(websocket.open)에 무엇이 설정되어 있습니까 ??

두 번째 질문 : 다음은

testWebSocket() javascript function이 실행되는 순서입니다.

websocket = new WebSocket(wsUri);   
websocket.onopen = function(evt) { 
    onOpen(evt) 
}; 
websocket.onclose = function(evt) { 
    onClose(evt) 
}; 
websocket.onmessage = function(evt) { 
    onMessage(evt) 
}; 
websocket.onerror = function(evt) { 
    onError(evt) 
}; 

아래 코드를 실행하면 오류가 발생하는 경우에만 브라우저에 오류가 인쇄됩니다.

그래서 내 질문은 WebSocket object(websocket) open, close, onmessage, onerror의 특성이 설정되고 각각에서 writeToScreen 함수를 호출하고 있는데 왜 설정되지 않고 무엇이 진행되고 있는지는 testWebSocket() javascript function입니다.

function init() { 
    output = document.getElementById("output"); 
    testWebSocket(); 
} 

function testWebSocket() { 
    websocket = new WebSocket(wsUri); 
    websocket.onopen = function(evt) { 
     onOpen(evt) 
    }; 
    websocket.onclose = function(evt) { 
     onClose(evt) 
    }; 
    websocket.onmessage = function(evt) { 
     onMessage(evt) 
    }; 
    websocket.onerror = function(evt) { 
     onError(evt) 
    }; 
} 

function onOpen(evt) { 
    writeToScreen("CONNECTED"); 
    doSend("WebSocket rocks"); 
} 

function onClose(evt) { 
    writeToScreen("DISCONNECTED"); 
} 

function onMessage(evt) { 
    writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data + '</span>'); 
    websocket.close(); 
} 

function onError(evt) { 
    writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); 
} 

function doSend(message) { 
    writeToScreen("SENT: " + message); 
    websocket.send(message); 
} 

function writeToScreen(message) { 
    var pre = document.createElement("p"); 
    pre.style.wordWrap = "break-word"; 
    pre.innerHTML = message; 
    output.appendChild(pre); 
} 
+1

전체 코드를 살펴 보시겠습니까? 왜'클래스''메소드'와'변수'가 무엇인지 배우지 않고, "변수 전달 방법"조차도, 당신은 이것에 대해 봤습니까? –

답변

0

당신은 event handlers입니다.

testWebSocket 함수는 wsUri에 대한 WebSocket 연결을 만들려고합니다.

연결이 성공적으로 열리면 onOpen 함수가 호출됩니다. WebSocket 연결이 메시지를 받으면 onMessage 함수가 호출되고 연결이 닫히면 onClose이 실행됩니다.

그 중 하나라도 잘못되면 onError 함수가 실행됩니다.

연결이 설정 될 수 없으므로 onError 만 호출되고 있기 때문에 오류가 표시되는 것을 볼 수 있습니다.

관련 문제