2017-01-19 15 views
0

接続されたアンドロイドデバイスのバッテリステータスを定期的にチェックして配列を返す関数を作成しました。サーバーの起動時にこの機能を実行し、情報を他のページに提供している間、この機能を継続的に実行するにはどうすればよいですか?NodeJSサーバのバックグラウンドでJavascript機能を実行

var minutes = 1, the_interval = minutes * 60 * 500; 
setInterval(function() { 
adb.devices().then(function(devices) { 

    var promises = new Array(); 

    for (var i = 0; i < devices.length; i++){ 
     promises.push(adb.checkBattery(devices[i])); 
    } 

    Promise.all(promises).then(function(availableDevices) { 
     console.log('Updated:'); 
     console.log(availableDevices); 
     return availableDevices; 
    }); 
}); 
}, the_interval); 

これは、私が新しいプロジェクトを開いたときに自動的に作成された私のapp.jsファイルです。私が作成したさまざまなルートにapp.useを追加しました。 Expressを使用して

var express = require('express'); 
var path = require('path'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var multer = require('multer'); 
var adb  = require('./adb.js'); 

var index = require('./routes/index'); 
var users = require('./routes/users'); 
var devices = require('./routes/devices'); 
var openBrowser = require('./routes/openBrowser'); 
var closeBrowser = require('./routes/closeBrowser'); 
var openApp = require('./routes/openApp'); 
var closeApp = require('./routes/closeApp'); 
var install = require('./routes/install'); 
var uninstall = require('./routes/uninstall'); 
var pull = require('./routes/pull'); 
var push = require('./routes/push'); 
var battery = require('./routes/battery'); 


var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', index); 
app.use('/users', users); 
app.use('/devices', devices); 
app.use('/openBrowser', openBrowser); 
app.use('/openApp', openApp); 
app.use('/closeApp', closeApp); 
app.use('/install', install); 
app.use('/closeBrowser', closeBrowser); 
app.use('/uninstall', uninstall); 
app.use('/pull', pull); 
app.use('/push', push); 
app.use('/battery', battery); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

module.exports = app; 

答えて

0

私が正しく理解していれば、あなたはいくつかの間隔でそれを実行する必要がありますuはあなたが使用することをお勧めし、Webサーバにはいくつかの要求に反応し、あなたの機能を使用したい場合は

var express = require('express'); 
var app = express(); 

app.listen(3000, function() { 
    yourFunction(); 
    setInterval(yourFunction, << period in ms >>); 
}); 

function yourFunction() 
{ 
    << your code >> 
} 

ミドルウェア:

var express = require('express'); 
var app = express(); 

app.use(function(req,res) { 
    if(condition) 
     yourFunction(); 
}) 

app.listen(3000, function() { 
}); 

function yourFunction() 
{ 
    << your code >> 
} 
+0

これはどのファイルに配置されますか? app.js? – rrain

+0

またはindex.js、あなたが望む任意の名前) –

+0

あなたが既にmakeされているアプリケーションを持っているなら、そのコードも表示することをお勧めします。 –

関連する問題