我正在为我的项目使用Richfaces 4.2.2,并且从this link,我们发现大气0.8.4需要用于兼容性。我能够推动工作,但它使用长轮询而不是websockets。 Webserver是Jboss 8.2(下载)。
完成以下配置以实现此目的:
<context-param>
<param-name>org.richfaces.push.initializeOnStartup</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.atmosphere.useBlocking</param-name>
<param-value>true</param-value>
</context-param>
在服务器端,使用
将推送通知发送到客户端TopicKey topicKey = new TopicKey(key);
TopicsContext topicsContext = TopicsContext.lookup();
topicsContext.publish(topicKey, message);
在客户端,收到通知。我添加了脚本块以使用transport作为websocket,但它似乎失败了。
<script>
RichFaces.Push.transport = "websocket";
RichFaces.Push.fallbackTransport = "long-polling";
</script>
<a4j:region>
<a4j:push address="update">
<a4j:ajax event="dataavailable" render="someelements"/>
</a4j:push>
</a4j:region>
任何人都可以指导我缺少配置吗?或者,当前版本的richfaces / atmosphere是限制,长轮询是唯一受支持的传输机制吗?
在javascript控制台上看到错误:
答案 0 :(得分:0)
查看版本4.2.2.Final的push.js,
richfaces.Push.transport = "long-polling";// "websocket";
richfaces.Push.fallbackTransport = undefined;//"long-polling";
应该{{1}}而不是richfaces
。注意案例敏感性。
我不确定为什么websocket会被故意注释掉。相同的代码适用于版本4.3.7.Final,但对于版本4.5.7.Final,websocket不再被注释掉。所以我建议你升级到4.5.7版。