a4j:不使用websockets并回退到长轮询

时间:2015-06-28 09:16:30

标签: ajax jboss websocket richfaces long-polling

我正在为我的项目使用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控制台上看到错误:

enter image description here

1 个答案:

答案 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版。