Sailsjs会话错误

时间:2015-03-24 23:02:27

标签: sails.js

继续收到此警告&我解除应用程序时出错,无法解决问题。希望有人对此有所了解:

  

警告:套接字已断开连接,但无法加载会话以传递给已配置的断开连接处理程序:sails.config.sockets.onDisconnect()。将伪造的空会话作为生命周期回调的参数传递。细节:    错误:无法加载会话       at _createError(/Users/JAT/Dropbox/Bottage/bottage_app/node_modules/sails/lib/hooks/session/index.js:271:21)       在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){[错误:无法加载会话]代码:' 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',

将其存储在我的Mongo数据库中:

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

这是对的吗?

1 个答案:

答案 0 :(得分:1)

消息的原因是当您重新启动sails时,会话信息在服务器端被删除,但客户端仍然有会话cookie,当它重新连接时,它会重用前一个会话cookie来识别哪个不再有效,因此服务器记录此警告。

有多种方法可以阻止此消息:

  1. 使用外部会话存储(例如redis)将会从sails中分离会话数据,并在重新启动sails时保留它。见这里:http://sailsjs.org/documentation/reference/configuration/sails-config-session
  2. 如果不需要socket.io,请从项目中删除它以删除assets/js/dependencies/sails.io.js和服务器端的客户端删除tasks/pipeline.js和sails.io.js包含文件
  3. 将其添加到.sails.rc

      {
        "hooks": {
          "sockets": false,
          "pubsub": false 
         }
      }
    
    1. 只需重新打开将启动新套接字会话的浏览器窗口