如何在XPage-SSJS中获取Domino服务器的会话超时。我想在会话到期之前提示用户保存他/她的数据。感谢
答案 0 :(得分:1)
当这些用户向服务器发出请求时,服务器仅与用户通信。
因此,如果服务器尚未请求,则服务器无法向用户发送信息。
例如:
用户从服务器请求页面。
服务器将该页面发送回用户,并创建会话 对于那个用户。会议将在5分钟后到期。
那5分钟结束了,同时用户没有请求 进一步的页面。所以用户会话结束,但因为用户 没有提出任何请求,服务器无法进行通信 给用户。
这就是HTTP流量设计工作的方式。然而,有很多方法,通过改变上面的例子,我将向您展示最简单的方法之一:
用户从服务器请求页面。
服务器将该页面发送回用户,并创建会话
对于那个用户。该会话将在5分钟后到期。该页面
服务器发回有一个javascript setTimeout
函数,该函数设置为在服务器会话到期之前触发。
这5分钟后,用户还没有请求 进一步的页面。因此,用户会话结束,服务器无法与之通信 给用户。 但是,页面上的javascript知道服务器上的会话即将到期,并触发警报以告知用户保存他们的工作。
答案 1 :(得分:0)
在SSJS中,您可以使用以下代码获取SessionTimeout的设置:
facesContext.getApplication().getApplicationProperty("xsp.session.timeout", "30");
但这是一个静态值(以分钟为单位)。会话在当前会话的最后一个请求之后以X分钟(默认为30)到期。
答案 2 :(得分:0)
服务器和客户端之间的每次交互都会重置超时。所以可以做的是基本上在客户端进行倒计时,在每次新请求之后重置。这也可以用于客户端在实际会话超时之前的定义时间内触发保存交互。
这是否有意义是有争议的......或者也可以实现自动保存。