如何检测会话是否处于活动状态或已过期?

4

有没有一种方法可以调用来确定我的gsoap客户端会话是否仍然活着?

我所看到的唯一检查会话是否仍然存在的方法是在每次soap调用后检查所有cookie值是否匹配。由于设置了tcp_keep_alive标志,似乎gsoap应该知道会话是否仍然活着。是否有gsoap功能可以在soap调用之前检查这一点?是否有一个回调函数会通知我会话丢失?还是我应该为此目的创建一个虚拟的soap方法?


1
Cookies是一种可行的方法,正如您已经注意到的那样。第19.11节还有关于监视SOAP_EOF的gSOAP错误的注释。对于UNIX实现,还有有关为SIGPIPE实现信号处理程序的注释。 - Dave Newman
1个回答

0
你可以使用Genivia插件,在localhost:8080上检查、创建或更新一个在任何路径上都有效的会话。
soap->cookie_domain = "localhost:8080";
struct soap_session *session = soap_start_session(soap, NULL, NULL); 

要在会话中创建一个新的会话变量或修改现有的会话变量:

soap_set_session_var(soap, "session_var_name", "session_var_value", NULL, NULL);

要访问该会话变量的值:

const char *value = soap_get_session_var(soap, "session_var_name", NULL, NULL);

删除该会话变量:

soap_clr_session_var(soap, "session_var_name", NULL, NULL); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接