我正在使用Richfaces 4.2.2进行项目开发,并从this link了解到需要使用atmosphere 0.8.4以确保兼容性。我能够使推送功能正常工作,但它是使用长轮询而不是WebSockets。Web服务器是Jboss 8.2(undertow)。
以下配置已完成以实现此目的:
在客户端,通知以以下方式接收。我已添加脚本块以使用传输推送作为WebSocket,但似乎失败了。
以下配置已完成以实现此目的:
<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);
在客户端,通知以以下方式接收。我已添加脚本块以使用传输推送作为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控制台上看到的错误:
RichFaces
,但假设如果 Atmosphere 切换回长轮询,则意味着它没有找到对 WebSockets 的支持,您应该在控制台中看到一条消息。 - Makhiel