我需要为聊天室实现长轮询或挂起请求。我尝试了 a4j:push,但它似乎不像真正的长轮询方法那样工作(参见以下讨论:https ://community.jboss.org/message/16614 )。
问题是:我必须使用哪些替代方案来实现长轮询?
我正在使用 JSF 1.2、JAVA EE 6 和 RichFaces 3.3.2。
提前谢谢!
您需要使用a4j:poll
RichFaces 中的组件。exadel现场演示有一个非常好的示例并解释了主要属性。另外,您可以在官方文档中获得更多信息。
也许您想查看聊天实现示例而不是轮询。有一个问题:
尝试使用netty-socketio java 项目。它有很长的投票支持。在您的 jsf 页面上使用Socket.IO 客户端javascript lib。
Javascript 库使用示例:
<script type="text/javascript">
var socket = io.connect('http://localhost:81', {
'transports' : [ 'xhr-polling' ],
'reconnection delay' : 2000,
'force new connection' : true
});
socket.on('message', function(data) {
// here is your handler on messages from server
});
// send object to server
var obj = ...
socket.json.send(obj);
</script>