2014-04-04 13 views
8

Al momento è in esecuzione un server nodo, utilizzo npm forever per mantenerlo in esecuzione quando non sviluppo e utilizzo npm nodemon per quando si modifica (riavvia l'app in modifica/caricamento).Archiviazione permanente della sessione nel nodo

Ho notato che ogni volta che riavvio la mia app, i dati della sessione sono persi e i miei giocatori devono accedere nuovamente ai loro account. Non è un affare enorme, ma mi chiedevo se c'era un modo per modificare la mia pagina server.js senza riavviare l'app e loggare tutti fuori?

(Si noti che questo vale solo per i server.js o modifiche dei moduli .html e .js pagine che sono serviti non richiedono un riavvio.)

(Seconda nota: Sto usando MySQL, nodejs, angularjs, esprimono .io per tutto questo, nel caso qualcuno lo chieda)

+0

Io uso l'API del nodo-cluster e riavvio i lavoratori di uno senza riavvio del processo principale ... Ma anche io non ho dati importanti nella memoria, c'è Redis per questo ... mysql non è il posto migliore per le sessioni , aggiungi alcuni come Redis (o Memcache) per questo al tuo stack .. –

+0

check (il tuo portafoglio) {return "Stai facendo gioco"} – Jamie

risposta

7

Non c'è un modo per modificare un file (e avere le modifiche caricate) senza riavviare il server e ricaricare il file. Invece, memorizza i tuoi dati di sessione da qualche altra parte oltre alla memoria. So che stai usando MySQL, quindi usa il pacchetto connect-mysql (ci sono altri pacchetti come questo per redis, MongoDB, ecc.).

E 'semplice come mettere questo nel file app.js:

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 
})); 

Questo metterà un solo HTTP (vale a dire l'utente non può vedere/usarlo) cookie sul computer di ciascun utente. Anche dopo il riavvio del server, connect-mysql sarà in grado di piacere a un utente con i propri dati di sessione in MySQL tramite questo cookie.

+0

Stanno usando MySQL ??? – Seth

+0

@Seth si, lo sa perché mi ha già aiutato prima e siamo entrambi [JS Chat] (http://chat.stackoverflow.com/rooms/17/javascript-is-for-lovers) clienti abituali. –

+0

@Seth Sì, l'ho aiutato con questo prima. – SomeKittens

Problemi correlati