2013-04-30 2 views
0

새로운 프로그래머들 사이에서 매우 인기있는 30 미만의 모든 계승을 계승하는 nodejs 프로그램을 작성하고 싶습니다.nodejs의 온라인 계승 프로그램

fact(0) = 1 
fact(i) = i*fact(i-1) 

하지만 이번에는 nodejs가 클라이언트의 웹 브라우저에서 출력물을 온라인으로 인쇄하기를 원합니다.

나는 계승을위한 코드를 작성하는 방법을 알고 있지만 새로운 계승 번호가 계산 될 때마다 클라이언트보기를 업데이트하는 방법을 모르겠습니다.

답변

2

우선 프로세서 집중 작업은 다른 프로세스에서 수행해야합니다. 노드 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); 
    }); 
}); 

Herec9.io에 전체 프로젝트입니다.

+1

* "모든 숫자가 30보다 작습니다. *, Node는 땀을 많이 흘리지 않습니다. 질문은 CPU 집약적 인 노드 응용 프로그램을 빌드하는 방법이 아니라 결과를 사용자에게 돌려주는 것과 관련이 있습니다. – robertklep

+0

예 로버트가 옳습니다! – orezvani

+0

@robertklep'> OP가 새로운 node.js ** 서버에서 CPU 집약적 인 작업을 수행하는 것처럼 보이지만, 새로운 계급 번호가 계산 될 때마다 클라이언트 뷰를 업데이트합니다. 이는 완전히 나쁜 습관입니다. 숫자가 아무리 작 으면 계승을 계산하는 동안 기본 이벤트 루프를 차단합니다. 다른 ** node.js ** 프로세스에서 계산을 수행하지 않으려는 경우. 가능하다면 다른 언어/통역사에서이 작업을보다 빠르고 효율적으로 처리 할 수 ​​있다고 생각합니다. – fardjad