2015-03-24 74 views
4

繼續收到此警告&錯誤,當我解除我的應用程序,並無法弄清楚。希望有人有這個想法:Sailsjs會話錯誤

warn: Socket disconnected, but session could not be loaded to pass to configured disconnect handler: sails.config.sockets.onDisconnect() . Will pass a fake, empty session as argument to lifecycle callback. Details: Error: Session could not be loaded at _createError (/Users/JAT/Dropbox/Bottage/bottage_app/node_modules/sails/lib/hooks/session/index.js:271:21) at Immediate._onImmediate (/Users/JAT/Dropbox/Bottage/bottage_app/node_modules/sails/lib/hooks/session/index.js:274:13) at processImmediate [as _immediateCallback] (timers.js:358:17) { [Error: Session could not be loaded] code: 'E_SESSION' }


wZVanG編輯:這個問題已經是固定的,但我不知道是否有正確的配置:

sailsrc(我刪除了從Sails模型默認創建,因爲我只是使用mongoose),然而sockets我沒有刪除它們:

"hooks": {"orm": false, "pubsub": false, "blueprints": false} 

/config/sessions.js

adapter: 'mongo', 
host: 'localhost', 
port: 27017, 
db: 'page', 
collection: 'sessions', 

這將其存儲在我的蒙戈數據庫:

{ 
    "_id" : "Nt90RxTcHkOT9aM3qJ1QzxyHlnvFoUuw", 
    "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}", 
    "expires" : ISODate("2015-07-24T10:59:42.551Z") 
} 

It is correct?

回答

1

的原因消息是,當你重新啓動帆會話信息在服務器端被刪除,但客戶端仍然有一個會話cookie,當它重新連接時,重用先前的會話cook即識別哪些不再有效,因此服務器記錄此警告。

有許多的方法來防止這樣的信息:

  1. 使用外部會話店如Redis的將從帆離開會話數據,並保持它,甚至當你重新啓動帆。在這裏看到:http://sailsjs.org/documentation/reference/configuration/sails-config-session
  2. 如果socket.io不需要從項目中刪除它刪除客戶端刪除assets/js/dependencies/sails.io.js和sails.io.js包括文件tasks/pipeline.js和服務器端

這增加.sails.rc

{ 
    "hooks": { 
     "sockets": false, 
     "pubsub": false 
    } 
    } 
  • 剛剛重新打開瀏覽器窗口,這將開始一個新的套接字會話
  • +0

    我目前使用套接字,請檢查我的問題**編輯**。 – 2015-07-10 11:33:17

    +1

    你的配置看起來是正確的,如果爲應用程序使用多於一個的實例,還需要考慮的一件事是將Socket.IO消息存儲移動到mongo,否則sails實例將無法爲連接它們之間的客戶端發佈消息。要做到這一點,安裝socket.io-adapter-mongo並將以下行添加到'config/sockets.js'中: 'adapter:'socket.io-adapter-mongo', adapterOptions:{ host:'localhost', port:27017, db:'mubsub' },' – 2015-07-12 05:52:14

    +0

    你是什麼意思與多一個實例?我的服務器託管在Google Cloud(Ubuntu)上,我部署了多個使用不同端口的網站,例如'8081,8082,8083',以及Nginx的反向代理,這些都有什麼關係? – 2015-07-14 03:29:16