我正在使用MEAN.JS框架(MongoDB,ExpressJS,AngularJS和NodeJS)来构建应用。
使用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
文件中执行代码,但所有会话都执行此代码并且这不是我想要的。
非常感谢!
答案 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是您的快递服务器。