Sails.js Sailsjs会话错误

Sails.js Sailsjs会话错误,sails.js,Sails.js,当我提起我的应用程序而无法解决时,会不断收到此警告和错误。希望有人对此有所了解: 警告:套接字已断开连接,但无法加载会话以传递给已配置的断开连接处理程序:sails.config.sockets.onDisconnect()。将假空会话作为参数传递给生命周期回调。细节: 错误:无法加载会话 at_createError(/Users/JAT/Dropbox/Bottage/Bottage_app/node_modules/sails/lib/hooks/session/index.js:271:

当我提起我的应用程序而无法解决时,会不断收到此警告和错误。希望有人对此有所了解:

警告:套接字已断开连接,但无法加载会话以传递给已配置的断开连接处理程序:
sails.config.sockets.onDisconnect()
。将假空会话作为参数传递给生命周期回调。细节: 错误:无法加载会话 at_createError(/Users/JAT/Dropbox/Bottage/Bottage_app/node_modules/sails/lib/hooks/session/index.js:271:21) 立即。_onImmediate(/Users/JAT/Dropbox/Bottage/Bottage\u app/node\u modules/sails/lib/hooks/session/index.js:274:13) 在processImmediate[as _immediateCallback](timers.js:358:17){[Error:Session无法加载]代码:'E_Session'}


wZVanG Edit:问题已经解决,但是我想知道我是否有正确的配置:

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")
}
这是正确的吗


出现此消息的原因是,当您重新启动sails时,服务器端的会话信息将被删除,但客户端仍有一个会话cookie,当客户端重新连接时,它将重新使用上一个会话cookie来标识不再有效的会话cookie,因此服务器会记录此警告

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

  • 使用诸如redis之类的外部会话存储,它将从sails分离会话数据,并在重新启动sails时将其保留。请看这里:
  • 如果不需要socket.io,则将其从项目中删除以删除客户端删除
    assets/js/dependencies/sails.io.js
    tasks/pipeline.js
    中的sails.io.js include文件以及服务器端
  • 将此添加到
    .sails.rc

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

  • 我现在正在使用<代码>套接字>代码>,请检查我的问题编辑。您的配置看起来正确,如果使用多个应用程序的一个实例,则要考虑将SoCKET.IO消息存储移动到Mango,否则,SAILS实例将无法为它们之间连接的客户端发布消息。为此,请安装socket.io-adapter-mongo并将以下行添加到
    config/sockets.js
    adapter:'socket.io adapter-mongo',adapter选项:{host:'localhost',port:27017,db:'mubsub',},
    对于多个实例,您的意思是什么?。我的服务器托管在Google Cloud(Ubuntu)上,我使用不同的端口部署多个站点,如
    8081、8082、8083
    ,并使用Nginx反向代理,这有什么关系?多个实例是指如果您有多个进程(在同一服务器或不同服务器上)同时运行同一个sails.js应用程序,看起来这就是您描述的案例中的情况。谢谢,我没有在不同页面上使用套接字的案例,但我会尝试。