目前我正在使用主推向客户端的 jsf 页面发送刷新命令,然后 jsf 页面将重新加载自身并呈现更改。它看起来像这样:
服务器:
EventBus eventBus = EventBusFactory.getDefault().eventBus();
eventBus.publish("/event/" + eventId, "updateEntries");
客户:
<p:socket channel="/event/#{detailController.id}" onMessage="handlePush"/>
<script type="text/javascript">
function handlePush(msg) {
switch (msg) {
case "updateEntries":
updateEntries();
break;
}
}
</script>
<h:form>
<p:remoteCommand name="updateEntries" actionListener="#{detailController.reloadEntries()}" update="entries" />
</h:form>
然而,这工作得很好,但我认为如果我有更多的客户,这将成为一个性能问题,因为每个客户同时请求孔数据。
我的想法是对更改/添加的实体进行编码,并通过推送将 json 传输到客户端,然后解码 json 并将其添加到数据表中。
有没有其他方法可以处理大量需要即时更新的客户端?