Я использую этот код для запуска асинхронного. сервер:
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" }
}
}
Что не так с моим кодом?
session().load()
должен быть первым оператором в обработке сеанса асинхронных приложений
Вам не нужно проверять статус.
После смены сеанса звоните сохранить.
Вы не вызываете «load ()» в конце
Других решений пока нет …