나는 node.js에 서버를 작성하고 오류로 인해 연결이 실패 할 때 계속 실행하려고합니다. 따라서 새로운 domain
모듈을 사용하려고하는데 domain.dispose()
을 사용하는 올바른 방법을 찾을 수 없습니다.Node.js : using domain.dispose()
첫째, node -v
: v0.8.3
나는 domain.dispose()
가 도메인 개체가 설정 한대로 정리하는 오류에 호출 할 필요가 있다고 생각. 그러나 그 결과는 내가 기대했던 것이 아니었고 적절한 사용법에 대한 문서 나 토론을 찾을 수 없었습니다.
이것은 내가 문제를 분리 해낸 코드는 다음과 같습니다
var domain = require('domain');
var EventEmitter = require('events').EventEmitter;
var i = 0;
function cycle() {
process.nextTick(cycle);
var emitter = new EventEmitter();
emitter.i = ++i;
emitter.on('test', function() {
throw new Error('asdasd ' + emitter.i);
});
var dm = domain.create();
dm.on('error', function(er) {
console.error('Error', er);
//dm.dispose();
});
dm.add(emitter);
emitter.emit('test');
}
cycle();
그것은, EventEmitter
,이를위한 별도의 도메인을 만들고 도메인에 이미 터를 추가하고 이미 터의 오류를 트리거합니다. 그런 다음 반복됩니다. ,
dm.on('error', function(er) {
console.error('Error', er);
dm.dispose();
});
이 방법 : 나는 그것이 있어야한다고 가정 domain.dispose()
를 추가, 이제
[...]
Error { [Error: asdasd 1068]
domain_thrown: true,
domain: { members: [ [Object] ], _events: { error: [Function] } } }
Error { [Error: asdasd 1069]
domain_thrown: true,
domain: { members: [ [Object] ], _events: { error: [Function] } } }
[...]
:
모든 오류가 잇달아 로그인,주기가 계속, 잘 이 사이클은 두 번만 반복됩니다 :
Error { [Error: asdasd 1]
domain_thrown: true,
domain: { members: [ [Object] ], _events: { error: [Function] } } }
Error { [Error: asdasd 2]
domain_thrown: true,
domain: { members: [ [Object] ], _events: { error: [Function] } } }
더 이상 출력하지 않으면 프로그램이 종료됩니다 .
그래서 나는 domain.dispose()
의 목적과 의미를 이해하지 못하거나 어쩔 수없는 일을합니다. 나는 아마 근원을 파헤쳐 보일 것이다. 그러나 그 동안은 미래 세대를 위해서만 문제를 분명히하는 것이 좋을 것이다. 응용 프로그램을 활성 상태로 유지하는 데 함수를 사용하는 방법을 알고 있으면 공유하십시오. 감사.