当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