gpt4 book ai didi

jsf - PrimeFaces 推送 : subscription to multiple dynamic channels

转载 作者:行者123 更新时间:2023-12-04 19:31:45 25 4
gpt4 key购买 nike

我有一个 p:dataTable 显示每行的金融工具和实时价格,我想使用 p:socket 设置广播 channel ,一个 channel 对于每一行。目标是当单个仪器的新价格到达时,我能够只更新它的单元以获得更好的性能。

首先,我尝试复制 showcase's chat example 中的聊天示例, 从服务器端订阅动态 channel ,但这样客户端无法获得消息在哪个 channel 上(p:socket 是否处理多个 channel ?)。

然后,我尝试在数据表中插入 p:socket:

<p:dataTable var="instrument"  … >
<p:socket onMessage="handleMessage(#{instrument.id})" channel="/price" autoConnect="false"
widgetVar="subscriber_#{instrument.id}" />

</p:dataTable>

在服务器端:

for (Instrument instrument : instruments) {
RequestContext.getCurrentInstance().execute("subscriber_" +instrument.getId() + ".connect('/" + instrument.getId() + "')");
}

但这会在客户端引发错误:

ReferenceError: subscriber_123 is not defined

还有其他方法吗?我在客户端或服务器端管理订阅都没有问题,唯一重要的是我不想将所有价格推送给所有客户端。

使用 PrimeFaces 3.4.1

最佳答案

如果您仍然无法使其正常工作,请按以下方法动态订阅/连接到 channel 。

RequestContext.getCurrentInstance().execute("subscriber.connect('/" + instrument.getId() + "')");

您不需要多个 <p:socket>在你的数据表中。单个套接字足以处理您的所有发布/订阅。

关于jsf - PrimeFaces 推送 : subscription to multiple dynamic channels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13113220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com