【发布时间】:2015-09-14 20:55:11
【问题描述】:
我在我的项目中使用 Richfaces 4.2.2,并且从this link 发现需要使用气氛 0.8.4 来实现兼容性。我能够让推送工作,但它使用长轮询而不是 websockets。 Webserver 是 Jboss 8.2 (undertow)。
为了实现这一点,做了以下配置:
<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 的支持,您应该在控制台。 -
感谢您的评论。是的,我在控制台中收到错误消息。它指出“Firefox 无法在 ws://localhost:8080/prj/__richfaces_push?__richfacesPushAsync=1&pushSessionId=ea0b3624-d7d1-4419-a856-4a8fefdab836 建立与服务器的连接。”。但是,我有最新的支持 websockets 的 firefox,webserver 是 JBoss 8,2,它也支持 websockets。请让我知道,如果您能指导我找出导致此错误的可能原因。
-
@Makhiel 如果有建议,请告诉我。我仍然面临这个问题。
标签: ajax jboss websocket richfaces long-polling