我使用此代码运行异步。服务器:
int main(int argc, char ** argv)
{
cppcms::service service(argc, argv);
booster::intrusive_prt<gameServer> c = new gameServer(service);
service.applications_pool().mount(c);
service.run();
}
在gameServer类中,我有以下代码:
session().reset_session();
session()["username"] = "admin";
session().save();
...
if(!session().load())
std::cerr<<" session doesn't load";
当我编译并运行程序时,显示session doesn't load
消息。如果我用同步替换main
函数。服务器并移除session().load()
和session().save()
,没有错误,可以显示session["username"]
。
这是我的配置文件
{
...
"file_server" : { "enable" : true, "document_root" : "." },
"session :
{
"expire" : "browser",
"timeout" : 604800,
"location" : "server",
"server" : { "storage" : "files" }
}
}
我的代码出了什么问题?
答案 0 :(得分:1)
session().load()
应该是异步应用程序的会话处理中的第一个语句
您根本不需要检查状态。
更改会话后,请调用save。
你最后没有调用“load()”