2012-02-05 2 views
1

서버 (노드)에는 동기 요청을 처리하는 스레드와 비슷한 스레드가 있지만 클라이언트 측의 javascript가 멀티 스레딩을 지원하지 않는다는 것을 알고 있습니다. 나는 클라이언트 측 (자바 스크립트)이 node.js를 서버의 여러 응답과 함께 처리하는 방법을 묻는 것입니다. 예를 들어 두 개의 객체를 동시에 렌더링하려고합니다.클라이언트 쪽 처리 방법 서버에서 다중 응답을 처리하는 node.js

node.js로 빠른 단계별 실시간 게임 앱을 만드는 것이 맞습니까?

이 문제를 처리 할 방법이나 패턴이 있습니까?

+1

내가 무엇을 요구하는지 잘 모르겠습니까? 노드는 브라우저처럼 단일 스레드입니다. 두 개의 요청을 동시에 보낼 수있는 클라이언트는 하나의 스레드 만 있으면 어떻게 될까요? – loganfsmyth

+0

귀하의 권리를 추측합니다. 결국 노드는 싱글 스레드입니다. 그냥 스레드를 사용하지 않고 소켓에 코드를 사용하지 않습니다. 병이 아프다고 먼저 노드를 시도해야합니다. 예, 두 명의 고객이 동시에 요청을 보내는 방법은 무엇입니까? –

답변

2

노드를 지휘관으로 생각하면 차단없이 작업 모니터링을 처리합니다. 따라서 노드가 다중 스레드 일 필요는 없다고 생각하면 대기 시간없이 작업을 실행하므로 아무 것도 차단되지 않으므로 새 스레드를 작성할 필요가 없습니다.

당신의 의견에이 소켓에 대해 언급하고 있습니다. Node는 데이터에 대한 TCP/UDP 연결을 모니터링하는 네트워크 스레드를 가지고 있습니다. 패킷을 수신하면 노드 패킷에이 패킷에 대해 수행 할 작업을 묻습니다. , 즉시이 새로운 패킷을 응답으로 보내도록 네트워크 스레드에 알린 다음 네트워크 스레드가 그 다음 이벤트가 호출되는 동안 그렇게합니다. 때 단지 콜백을 사용


,이 Node.js를에서

를 설명해야 다음 이미지 및 단락에서보세요, 당신은 백엔드에서 일어나는 일에 대해 걱정 안된다 I/O를 수행하고 있습니다. 코드가 중단되지 않고 I/O를 수행해도 요청 당 스레드/프로세스 비용 (예 : Apache의 메모리 오버 헤드)이 발생하지 않으면 서 다른 요청을 차단하지 않습니다.

I/O가 대부분의 코드보다 비싸고 I/O를 기다리는 것보다 더 나은 작업을 수행해야하기 때문에 비동기 I/O를 사용하는 것이 좋습니다.

enter image description here

이벤트 루프 "처리하고 외부 이벤트를 처리하는 콜백 호출로 변환하는 엔티티"

이다. 따라서 I/O 호출은 Node.js가 한 요청에서 다른 요청으로 전환 할 수있는 지점입니다. I/O 호출에서 코드는 콜백을 저장하고 node.js 런타임 환경으로 제어를 반환합니다. 콜백은 데이터가 실제로 사용 가능할 때 나중에 호출됩니다.

출처 : http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/


이 나를 완전히 백 엔드 아키텍처에 무슨 일이 있었는지 이해가 만든 첫 번째 기사였다 그 기사를 읽어 보시기 바랍니다.

+0

감사합니다 @ 로버트 이제 어떻게 노드가 내부적으로 작동하는지 이해합니다. 사실 저는 현재 노드 [link] (http://kesodebomba.heroku.com)를 사용하여 게임을 만들고 있습니다. 폭격기 맨 게임과 비슷합니다. –

+0

그냥 그 스프라이트를 동시에 렌더링하는 것이 지루하다는 것을 알았습니다. –

관련 문제