我剛剛瞭解了彗星模式(長輪詢),並非常好奇地實現了一個Tomcat6作爲容器的簡單示例。 我在這裏要做的是 - 我打算調用一個生成1到20之間的隨機數的servlet,並基於該隨機數在響應客戶端之前等待該秒數。使用Tomcat6實現彗星模式
例如:如果生成的隨機數是10,那麼servlet應該等待10秒才發送響應。
這裏是我的servlet實現CometProcessor
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);
}
我完全困惑爲this教程對我來說似乎有點複雜。
所有瀏覽器都支持WebSockets嗎? – JAVAGeek
瀏覽器支持的當前狀態可以在這裏看到:http://caniuse.com/#search=websockets當WebSocket不可用時的標準做法是使用[web-socket-js polyfill](https: //github.com/pusher/web-socket-js)。對於較老的瀏覽器,您可以查看基於Comet的後備或簡單地拖放到標準輪詢。後者並不理想,但它可能是我會走的路 - 或逐步增強我的應用程序,如果瀏覽器不支持WebSockets,那麼用戶將獲得減少的功能。 – leggetter
今天我使用DWR實現了彗星,並且按照預期的那樣運行':)'。那麼,我一定會嘗試網絡套接字,因爲它看起來很有趣。謝謝 ! – JAVAGeek