1

我刚刚了解了彗星模式(长轮询),并且非常想用 Tomcat6 作为容器来实现一个简单的示例。我在这里要做的是 - 我将调用一个 servlet,它生成一个介于 1 到 20 之间的随机数,并根据该随机数它应该在响应客户端之前等待该秒数。

例如:如果生成的随机数是 10 ,那么 servlet 在发送响应之前应该等待 10 秒。

这是我实现的servletCometProcessor

public class RandomNumberGenerator extends HttpServlet implements CometProcessor {

doPost 方法:

        PrintWriter out =response.getWriter();
        Random r = new Random();
        int randomInt = r.nextInt(20) + 1;
        out.print(randomInt);
        out.flush();
        out.close();

现在,当我实现时,CometProcessor我有一个事件方法:

@Override
    public void event(CometEvent event) throws IOException, ServletException {

    }

我想不通的是,我用这种event方法做什么来做我想做的事。

我在这里知道的是,它们将是我可以在此方法中处理的一些事件,例如:BRGIN,READ,END,ERROR

我应该使用这样的事件吗?

if (event.getEventType() == CometEvent.EventType.BEGIN) {
    event.setTimeout(numberOfSecondToWait);
}

我完全感到困惑,因为教程对我来说似乎有点复杂。

4

1 回答 1

2

我最近写了一篇关于WebSockets 和 Comet的博文,并请 'Comet' 的发明者提供他的意见。

总之,Alex 说WebSockets 取代了 Comet

因此,尽管人们仍在使用 Comet,但它最终将被 WebSockets 取代,因为它们是专门为解决 Comet 解决方案所解决的问题而创建的。

我建议您将注意力转移到 WebSockets 上。

于 2012-07-03T15:32:57.060 回答