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 –