2015-03-24 87 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