저는 변덕스럽게 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개의 연결을 유지해야 합니까? 이것이 가능할까요? 난 너무 혼란 스러워요.
두 번째 질문, 같은 브라우저를 열면 왜 차단되나요?
Node의 런타임은 단일 스레드 이벤트 루프를 사용합니다. 코드에서
setTimeout()
函数是一个阻塞操作,Node 只有一个线程执行setTimeout()
。因此其他的操作都在队列
를 기다리세요.여기에서 참고하실 수 있습니다: http://www.nodebeginner.org/i...
브라우저 문제입니다.
올바른 해결 방법은 다음과 같습니다.
https://github.com/tianyk/not...
Pu Ling에 따라 코드가 변경되었습니다:
으아아아여기서 res는 콜백에서 처리되므로 콜백이 다른 요청자에게 배포될 수 있습니다.
내가 작성하기 시작한 코드는 타이머에서 처리되며 콜백은 오류입니다. 보고했는데 잘 이해가 안 돼요
저는 Nodejs를 잘 모르지만 Nodejs가 높은 동시성을 처리할 수 있다는 말을 늘 들어왔습니다.