우선 프로세서 집중 작업은 다른 프로세스에서 수행해야합니다. 노드 HTTP 서버에서 그렇게하면 메인 이벤트 루프가 차단되기 때문입니다!
당신은 다른 프로세스 (들)에 대한 계산을 등
내 개인적인 의견은, 노드 표준 스트림, 소켓, 데이터베이스, 통해 Node.js를에 서버 프로세스를 결과를 전송할 수 있습니다
의 .js (나는이 작은 숫자 일 수 있음을 확신하고 있어요) Heroku에이 문서는 Building a Real-time, Polyglot Application with Node.js, Ruby, MongoDB and Socket.IO을 안내
같은 계산을위한 올바른 도구가 아닙니다.
> I just want to know how to show my output to the client whenever something happens
:
다음
npm install socket.io
노드 응용 프로그램 :
socket.io 이 작업을 수행하기 위해, 당신은 먼저 설치해야
이 예제에서, 나는 한 간격으로 클라이언트에게 메시지를 보내고있다.
var http = require('http'),
io;
var html = "<!doctype html>" +
"<title>Socket.IO Example</title>" +
"<div id=\"number\"></div>" +
"<script src=\"/socket.io/socket.io.js\"></script>" +
"<script>" +
"var socket = io.connect()," +
"numberElement = document.getElementById('number');" +
"socket.on('message', function (data) {" +
//"numberElement.innerText = data;" +
"numberElement.innerHTML = data;" +
"});" +
"</script>";
var server = http.createServer(function (request, response) {
response.statusCode = 200;
response.setHeader('Content-Type', 'text/html');
response.end(html);
});
server.listen(8080);
io = require('socket.io').listen(server);
function push(socket) {
var i = 0;
return function() {
socket.send(String(i++ % 3600));
};
}
io.sockets.on('connection', function (socket) {
var interval = setInterval(push(socket), 1000);
socket.on('disconnect', function() {
clearInterval(interval);
});
});
Here는 c9.io에 전체 프로젝트입니다.
* "모든 숫자가 30보다 작습니다. *, Node는 땀을 많이 흘리지 않습니다. 질문은 CPU 집약적 인 노드 응용 프로그램을 빌드하는 방법이 아니라 결과를 사용자에게 돌려주는 것과 관련이 있습니다. – robertklep
예 로버트가 옳습니다! – orezvani
@robertklep'> OP가 새로운 node.js ** 서버에서 CPU 집약적 인 작업을 수행하는 것처럼 보이지만, 새로운 계급 번호가 계산 될 때마다 클라이언트 뷰를 업데이트합니다. 이는 완전히 나쁜 습관입니다. 숫자가 아무리 작 으면 계승을 계산하는 동안 기본 이벤트 루프를 차단합니다. 다른 ** node.js ** 프로세스에서 계산을 수행하지 않으려는 경우. 가능하다면 다른 언어/통역사에서이 작업을보다 빠르고 효율적으로 처리 할 수 있다고 생각합니다. – fardjad