2015-10-09 5 views
0

Я делаю простой сервер эха, который я хочу запустить как сервис под окнами. вот кодJXcore родное приложение как служба windows

var fs=require('fs'); 
var net = require('net'); 
var server = net.createServer(function(c) { //'connection' listener 
    console.log('client connected'); 
    c.on('end', function() { 
    console.log('client disconnected'); 
    }); 
    c.write('hello\r\n'); 
    c.pipe(c); 
}); 

server.listen(8124, function() { //'listening' listener 
    console.log('server bound'); 
}); 

    var fd=fs.openSync('log.txt', 'a'); 
    fs.writeSync(fd, 'START\r\n'); 
    fs.closeSync(fd); 

process.on('SIGINT', function (par){ 

    var fd=fs.openSync('log.txt', 'a'); 
    fs.writeSync(fd, 'SIGINT ('+par+")\r\n"); 
    fs.closeSync(fd); 

    process.exit(1); 
}); 

process.on('exit', function (code){ 

    var fd=fs.openSync('log.txt', 'a'); 
    fs.writeSync(fd, 'EXIT ('+code+")\r\n"); 
    fs.closeSync(fd); 
}); 

Следующая я скомпилирован с JXcore как:

jx package echoserver.js "echoserver" -native 

Затем исполняемый файл запустить из консоли или EXPLORER двойной щелчок и делать свою работу! ХОРОШО!

Теперь, когда инструмент SC окна, я создать службу

sc create echosvr full_path_to\echoserver.exe 

И echosvr теперь корректно указан в закладке службы окон менеджер задач.

Плохое приходит сейчас: я пытаюсь запустить службу несколькими способами, но я всегда получаю сообщение, которое сообщает мне, что служба не ответила на запрос запуска или контроля своевременно.

что я пропустил? Любое предложение?

+0

Я предполагаю, используя процесс в качестве службы Windows, требует дополнительных функций в этом приложении. – BigbangO

+0

Я предполагаю то же самое ... Я думаю, что я должен попробовать некоторую оболочку, такую ​​как [nssm] (https://nssm.cc/usage) .. Кажется, он делает то, что мне нужно. Я попробую, тогда я опубликую результаты – tmx976

ответ

0

Я понял!

Я загрузил nssm и переместил один исполняемый файл (32-разрядный, просто чтобы попробовать) в директории windows, я запустил из командной строки nssm.exe и настроил службу, как описано в ссылке nssm.

> nssm install echosvr 

это открывает всплывающее окно для конфигурации, где я положил мои потребности .. тогда:

начинается
> net start echosvr 

и сервера! Теперь он отображается на вкладке служб диспетчера задач. я остановил службу из диспетчера задач и файл журнала был как:

START 
SIGINT (undefined) 
EXIT (1) 

Вот что мне нужно, потому что сигнал изящный близкий запрос!

Чтобы развернуть такое решение, nssm предлагает установку командной строки, которую я обязательно использую!

(PS: Это не поддерживает паузы сервиса/резюме, но это может быть приемлемо ..)

Смежные вопросы