设置PrimeFaces套接字超时

时间:2014-01-29 14:32:27

标签: sockets java-ee primefaces atmosphere

我可以使用使用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+ "')");

1 个答案:

答案 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...
     }