当JSFWebSocket从DOM中删除时,它的客户端行为是什么

当JSFWebSocket从DOM中删除时,它的客户端行为是什么,websocket,jsf-2.2,omnifaces,Websocket,Jsf 2.2,Omnifaces,我有几个面板,每个面板显示一些内容,可以显示零个、一个或多个面板,如下例所示: <div jsf:id="contents"> <ui:fragment rendered="#{aContent.rendered}"> <h:form> <o:socket channel="a-channel" onmessage"onAMessage"/> <o:commandScri

我有几个面板,每个面板显示一些内容,可以显示零个、一个或多个面板,如下例所示:

<div jsf:id="contents">
    <ui:fragment rendered="#{aContent.rendered}">
        <h:form>
            <o:socket channel="a-channel" onmessage"onAMessage"/>
            <o:commandScript name="onAMessage"
                             actionListener=#{aContent.update()}"
                             render=":aComponent"/>
        </h:form>
        <my:aComponent id="aComponent" />
    </ui:fragment>

    <ui:fragment rendered="#{bContent.rendered}">
        <h:form>
            <o:socket channel="b-channel" onmessage"onBMessage"/>
            <o:commandScript name="onBMessage"
                             actionListener=#{bContent.update()}"
                             render=":bComponent"/>
        </h:form>
        <my:bComponent id="bComponent" />
    </ui:fragment>
</div>

我想知道在对封闭元素进行AJAX更新后,从DOM中删除其中一个UI片段时,客户端web套接字会发生什么情况

web套接字是否已关闭?
我应该考虑另一种方法吗?

< P>基于它是如何实现的,它将继续运行。您需要重复
connected
属性中的条件

<ui:fragment rendered="#{aContent.rendered}">
     <o:socket ... connected="#{aContent.rendered}" />

当我计划添加
的支持时,这可能会得到改进


另一方面,您的代码段是非-。尝试将其限制为仅1个socket+commandScript组合,该组合根据推送消息的内容动态执行其工作。另请参见文档的一节。

谢谢BalusC。您为添加支持的计划看起来很棒。这个实现是否有可能包括基本通知的管道,比如使用a、b、c作为基本通知消息(只是字符串)的结构?另请参见:是的,这就是目的。这是一个好消息:)最后一件事,但并非最不重要的一点:我同意您的观点,视图中只有一个web套接字频道是一个好的做法。但是,如果有一个方法可以在复合组件中添加一个事件观察者,那就太好了,就像CDI@observes模式一样,在接收到事件后,复合组件将只刷新需要的内容,而不是整个组件。我使用纯JavaScript方法进行的实验测试表明,我可以在更新期间将网络流量减少50%到70%,这仅仅是因为50%到70%的复合组件是静态HTML