现在我已经在primefaces中发现了推送技术,我想知道这两种方法中的哪一种在性能方面更好用。
我正在使用spring和primefaces在java中创建一个仪表板。
现在我有一个所有小程序的频道,我正在向所有页面播放一条消息和一个uuid,每个页面负责检查给定的uuid是否与之关联。如果答案是肯定的,页面将执行所需的操作,例如显示消息或仅刷新自己。
例如在万能的java中:
pushContext.push("/refresh-chan", getUuid().toString());
并在XHTML方面:
<p:socket onMessage="handleMessage" channel="/refresh-chan" />
<script type="text/javascript">
function handleMessage(uuid) {
var myUuid = '#{myBean.id}';
//console.log(myUuid + "-"+uuid);
if(uuid==myUuid)
{
//console.log("- I am refreshing myself : my id="+uuid);
location.reload();
}
}
</script>
但还有另一种方法可以解决这个问题,我可以为每个小面板创建一个单独的通道,并单独推送该小面板的上下文:
注意:代码是虚构的,可能无效:
pushContext.push("/refresh-chan"+getUuid().toString(),"may leave empty");
并在XHTML页面中(Yup!仍然想象):
<p:socket onMessage="handleMessage" channel="/refresh-chan"+#{myBean.id} />
<script type="text/javascript">
function handleMessage(dummy) {
location.reload();
}
</script>
除了性能和效率之外,请考虑代码是我正在构建的框架的一部分,其他开发人员必须编写自己的XHTML页面,然后在其页面中添加代码的XHTML部分(如上所示)因此,他们应该很容易理解正在发生的事情。
谢谢