javascript - 동시성을 처리하는 nodejs에 대한 약간의 의심
巴扎黑
巴扎黑 2017-05-16 13:39:29
0
3
674

저는 변덕스럽게 Express에서 경로를 정의했습니다.

으아악

테스트는 다음과 같습니다. N 브라우저 탭을 엽니다.
첫 번째 탭을 열고 localhost:3000/에 액세스합니다.
6초 이내에 두 번째 탭을 열고 localhost:3000/에 액세스합니다.
첫 번째 요청이 res.send에 있는 것으로 확인되었습니다. ( )는 종료 전에 두 번째 액세스에 응답하지 않습니다.
res.end
============에 대한 첫 번째 액세스 이후에는 console.log(++n)까지 2를 인쇄하지 않습니다. == =========마법 구분 기호==================================== = ===
실험 수정, 아래 댓글에 따르면 위 실험은 같은 브라우저의 다른 탭에서 열렸지만,
다른 브라우저를 사용했다는 뜻입니다. 즉, Google Chrome을 사용하여 localhost:3000 /을 연 다음, IE 브라우저를 사용하여 6초 이내에 localhost:3000/을 엽니다. 이전 요청은 후속 요청을 차단하지 않으므로 다음과 같은 질문이 발생합니다.
첫 번째 질문은 6초 안에 10,000명의 사용자가 동시에 방문한다면... 10,000개의 연결을 유지해야 합니까? 이것이 가능할까요? 난 너무 혼란 스러워요.
두 번째 질문, 같은 브라우저를 열면 왜 차단되나요?

巴扎黑
巴扎黑

모든 응답(3)
Peter_Zhu

Node의 런타임은 단일 스레드 이벤트 루프를 사용합니다. 코드에서 setTimeout() 函数是一个阻塞操作,Node 只有一个线程执行 setTimeout()。因此其他的操作都在 队列를 기다리세요.

여기에서 참고하실 수 있습니다: http://www.nodebeginner.org/i...

phpcn_u1582

브라우저 문제입니다.
올바른 해결 방법은 다음과 같습니다.
https://github.com/tianyk/not...

Pu Ling에 따라 코드가 변경되었습니다:

으아아아

여기서 res는 콜백에서 처리되므로 콜백이 다른 요청자에게 배포될 수 있습니다.
내가 작성하기 시작한 코드는 타이머에서 처리되며 콜백은 오류입니다. 보고했는데 잘 이해가 안 돼요

世界只因有你

저는 Nodejs를 잘 모르지만 Nodejs가 높은 동시성을 처리할 수 있다는 말을 늘 들어왔습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿