0
我使用HTTP彗星使用此代碼做一個網絡聊天:當我使用http彗星,我怎樣才能讓Tomcat發送TCP keepalive報文
public void event(CometEvent event) throws IOException, ServletException {
HttpServletRequest request = event.getHttpServletRequest();
HttpServletResponse response = event.getHttpServletResponse();
String regKey = request.getParameter("rk");
if (regKey == null) {
return;
}
if (event.getEventType() == CometEvent.EventType.BEGIN) {
event.setTimeout(Integer.MAX_VALUE);
System.out.println("Client [" + regKey + "] login...");
synchronized (connections) {
connections.put(regKey, response);
}
} else if (event.getEventType() == CometEvent.EventType.ERROR) {
System.out.println("Client [" + regKey + "] error...");
synchronized (connections) {
connections.remove(regKey);
}
event.close();
} else if (event.getEventType() == CometEvent.EventType.END) {
System.out.println("Client [" + regKey + "] logout...");
synchronized (connections) {
connections.remove(regKey);
}
event.close();
} else if (event.getEventType() == CometEvent.EventType.READ) {
System.out.println("Client [" + regKey + "] read...");
synchronized (connections) {
connections.remove(regKey);
}
event.close();
}
}
如果布勞爾或客戶端接近正常,我可以接受CometEvent.EventType.END
事件, 但如果客戶端停電我沒有收到任何消息。我知道TCP正在等待網絡恢復,但我想處理此事件,以便更新在線列表和其他重要事情(這意味着我必須處理此事件!!!)。
我知道TCP keep-alive可以解決這個問題,但是tomcat默認不發送keep-alive包給客戶端,我該如何解決呢。
我相信tomcat可以發送TCP keep-alive數據包,但是如何配置tomcat?
謝謝!
謝謝你,我是中國人,所以我的英語很差。我已經解決了這個問題,但是當我使用tomcat 7運行彗星Web應用程序時,我在瀏覽器中收到405,應該更改哪個配置文件? – user3047724