NodeJS:服务器启动时执行的代码

时间:2015-09-15 11:22:30

标签: node.js express

我正在使用MEAN.JS框架(MongoDBExpressJSAngularJSNodeJS)来构建应用。

使用Socket.IO;如果用户已连接,我将保留MongoDB用户架构。

//Connect
io.on('connection', function(socket){
    connectToChat(true);

    //Disconnect
    socket.on('disconnect', function(){
        connectToChat(false);
    });

    function connectToChat(isConnect){
        var user = socket.request.user;
        var numberOfSocketClients = Object.keys(io.sockets.adapter.rooms[user.id] || {}).length;
        if(isConnect || (!isConnect && numberOfSocketClients===0)) {
            User.findOne({_id: mongoose.Types.ObjectId(user.id)})
                .exec(function (err, doc) {
                    if(!err && doc){
                        doc.isConnected = isConnect;
                        doc.save(callback);
                    }
                });
        }

});

在所有情况下都可以正常运行除了服务器停止时 ...当服务器重新启动时,默认情况下所有用户都应该没有连接但是有一些连接的用户保存在MongoDB用户架构中。

Okey,我知道停止服务器是一种罕见的情况,因为我正在使用Forever ...但是,只有在服务器重新启动时才能在ExpressJS中执行代码的良好方法?我试图在server.js文件中执行代码,但所有会话都执行此代码并且这不是我想要的。

非常感谢!

1 个答案:

答案 0 :(得分:1)

收听ExpressJs听力活动。一旦服务器准备好接受连接,它就会在启动时触发。

$myDateTime = $myDateTime->createFromFormat('d/m/Y H:i', '15/09/2015 12:00');
$newDateString = $myDateTime->format('Y-m-d H:i');

app是您的快递服务器。