2014-04-04 25 views
8

'de kalıcı oturum depolama Şu anda çalışan bir düğüm sunucum var, geliştirmediğimde çalışmasını sürdürmek için npm forever kullanıyorum ve düzenlediğimde npm nodemon kullanıyorum (uygulamayı düzenleme/yeniden yükle).Düğüm

Uygulamamı her başlattığımda, oturum verilerinin kaybolduğunu ve oyuncularımın hesaplarına yeniden giriş yapmaları gerektiğini fark ettim. Bu bir huuuge anlaşması değil, ama uygulamayı yeniden başlatmadan ve herkesi günlüğe kaydetmeden sunucu.js sayfamı düzenlemenin bir yolu olup olmadığını merak ediyordum.

(. .html bu sadece server.js veya modül düzenlemeleri için geçerli olduğunu unutmayın ve yeniden başlatma gerektirmez sunulmaktadır .js sayfa)

(İkinci not: Ben mysql, nodejs, angularjs kullanıyorum, ekspres .o tüm bunlar için sorar, sadece sorarsa)

+0

Düğüm kümesi API'sini kullanıyorum ve ana işlem yeniden başlatılmadan işçileri tek tek yeniden başlatıyorum ... Ayrıca hafızasında önemli bir veri yok, bunun için Redis var ... mysql oturumlar için en iyi yer değil , bunun için biraz Redis (veya Memcache) gibi bir şey ekleyin .. –

+0

çek (portföyünüz) {return "Oyun yapıyorsunuz"} – Jamie

cevap

7

Sunucuyu yeniden başlatmadan ve dosyayı yeniden yüklemeden bir dosyayı düzenlemenin (ve yüklenen değişikliklerin) bir yolu yoktur. Bunun yerine, oturum verilerinizi hafıza dışında başka bir yerde saklayın. MySQL kullandığınızı biliyorum, bu yüzden connect-mysql paketini kullanın (redis, MongoDB vb. Gibi diğer paketler vardır).

Bu sizin app.js dosyasında bu koyarak kadar basit:

var MySQLStore = require('connect-mysql')(express) 
    , options = { 
     config: { 
     host : 'place.stuff', 
     user: 'RUJordan', 
     password: 'hunter2', 
     database: 'SomeKittensIsGreat' 
     } 
    }; 

app.use(express.session({ 
    secret: 'UpvoteThisAnswer', 
    store: new MySQLStore(options), 
    cookie: { maxAge: 2592000000 } // 30 days 
})); 

Bu (/ yani kullanıcı göremiyorum kullanımı) HTTP salt yerleştirdiğiniz her kullanıcının bilgisayarında çerez olacaktır. Bir sunucu yeniden başlatıldıktan sonra bile, connect-mysql, bir kullanıcı tarafından MySQL'deki oturum verilerini bu çerez aracılığıyla beğenebilecektir.

+0

MySQL kullanıyorlar ??? – Seth

+0

@Seth evet, bunu biliyor çünkü daha önce bana yardım etti ve ikimiz de [JS Chat] (http://chat.stackoverflow.com/rooms/17/javascript-is-for-lovers) düzenli olarak. –

+0

@Seth Evet, ona daha önce bununla yardım ettim. – SomeKittens