2016-12-14 57 views
0

我在node.js中使用socket.io進行websockets(實時聊天),它在live-chat.dev域上運行。沒有Express的Socket.io會話

現在我有另一個項目在本地主機上運行,​​我在那裏連接到live-chat.dev(客戶端)。

我通過session.id來識別存儲在node.js應用程序中的用戶。

問題是:每頁重新載入都會產生新的session.id。

配置的node.js會議middlware的:

var sessionMiddleWare = session({ 
    secret: 'livechat key', 
    resave: false, 
    saveUninitialized: true, 
    cookie: { 
    domain : 'localhost' 
    } 
}); 

io.use(function(socket, next) { 
    sessionMiddleWare(socket.request, socket.request.res, next); 
}); 

回答

0

我想你在找什麼是persistent session。您可以通過將會話對象存儲在任何數據存儲中並從中獲取它來實現此目的。

如果您對mongodb感到滿意,那麼您可以使用connect-mongo庫。

你可以閱讀更多關於它在這裏https://github.com/jdesboeufs/connect-mongo

+0

但問題是,在不同的主機名運行我的應用程序,這就是爲什麼插座IO給了我新的會話ID每次。如果我在一臺主機上運行兩個項目。一切工作正常 – Farkhad

+0

然後,我認爲在你的情況下,你將不得不編寫一個自定義的中間件,並將兩個域作爲一個整體來處理。你也可以閱讀這個http://stackoverflow.com/questions/19104292/express-session-with-different-cookie-domain-per-request它可以幫助你。 –

+0

它沒有幫助,我認爲問題在於localhost項目收到時不會設置coockie。感謝您試圖幫助! – Farkhad