我可以使用使用primefaces的push方法。我如何控制p:socket超时事件及其时间?
我的意思是,如何设置p:socket
超时?除了,
当p:套接字会话超时时如何捕获事件?
我正在使用与p:socket
相关的部分代码语句。
// XHMTL
<p:socket onMessage="handleMessage" channel="/chat" autoConnect="false"
widgetVar="subscriber" />
// Bean
RequestContext.getCurrentInstance().execute("subscriber.connect('/" + usernamePushContext+ "')");
答案 0 :(得分:0)
我找到了一个包含两个步骤的解决方案。
首先,您必须将servlet参数添加到web.xml
并实现PushContextListener
。
<param-name>org.atmosphere.cpr.CometSupport.maxInactiveActivity</param-name>
<param-value>9000</param-value>
其次,在每个onDisconnect()方法调用中,您应该检查传输值。
@Override
public void onDisconnect(Object arg0) {
String transport = ((AtmosphereRequest) arg0).getRequest().getParameter
(HeaderConfig.X_ATMOSPHERE_TRANSPORT);
根据传输值,您可以触发断开连接过程。
if (transport != null &&
(transport.equalsIgnoreCase(HeaderConfig.DISCONNECT) ||
transport.equalsIgnoreCase(HeaderConfig.LONG_POLLING_TRANSPORT)
)) {
// close operation...
}