0
我正在使用MEAN.JS框架(MongoDB,ExpressJS,AngularJS和NodeJS)构建应用程序。使用Socket.IO;如果用户连接或不连接,我将保留在MongoDB用户模式中。NodeJS:服务器启动时执行的代码
//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的用户架构的一些连接的用户,除了良好。
欧凯,据我所知,停止服务器是因为我使用Forever一个罕见的情况......但是,有没有好的方法来执行在ExpressJS代码重新启动服务器时,只有当?我试图在server.js
文件中执行代码,但所有会话都执行此代码,但这不是我想要的。
非常感谢!
谢谢,我现在要试试这个! –
不要为我工作...你能给我一些文档参考吗?我没有找到任何关于它的文档...谢谢! –
@AralRoca - 这是Node.js文档。 Express创建节点js服务器,以便所有节点事件也被触发:https://nodejs.org/docs/v0.6.13/api/net.html#net_event_listening –