2

我在 ui 端使用 ExtJs + CometD 和 Spring + Jetty 作为我的应用程序的后端。用户使用 spring 身份验证管理器 (j_spring_security_check) 进行身份验证。正常的 http 请求使用特定的 url 模式 (/myapp),而 cometd 通信发生在不同的 url 模式 (/cometd) 上。

我在服务器上将会话超时值设置为 30 分钟。一旦用户登录,CometD 活动就会开始(如握手、连接等)。我正在为 cometD 提供 Bayex 传输,以用作 WebSocket 和长轮询。对于不支持 WebSocket 的浏览器,CometD 通信使用长轮询机制进行。

问题是由于 CometD 客户端的长轮询,当 CometD 长轮询的心跳到达时,服务器上的会话超时计数器总是会重置。因此,会话在服务器上永远不会超时。

如果请求来自特定 URL(在我的情况下是 cometD url),是否有办法避免重置会话的会话超时值。

另外,如果我可以删除 cometD 发送到服务器的 HTTP 标头中的 JSSIONID 参数,是否有可能。可能如果我可以从 http 标头中删除 JSESSIONID,那么服务器将不会重置该会话的超时计数器。

谢谢,
布里吉

4

2 回答 2

1

这已在 CometD 邮件列表中提出,请参阅 https://groups.google.com/forum/?fromgroups=#!topic/cometd-users/xoTRl3lL9_o

投票给http://bugs.cometd.org/browse/COMETD-416,它可能包含在 CometD 2.6.0 中。

于 2013-03-29T12:55:31.963 回答
-1

您需要使用活动扩展。请点击链接

http://docs.cometd.org/3/reference/#_extensions_activity

于 2015-02-05T03:20:47.533 回答