我目前正在为学校开展聊天项目,其中两个客户端可以通过http服务器发送消息。我已经可以通过聊天消息发送POST请求,服务器会将其保存。
我现在的问题是客户端需要知道新的聊天消息是否可用。我试图这样做:
private void checkChat()
{
String url = "http://"+serverip+":"+serverport+"/requests";
while(verbunden==true)
{
try
{
URL requrl = new URL(url);
HttpURLConnection con = (HttpURLConnection) requrl.openConnection();
con.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null)
{
response.append(inputLine);
}
in.close();
gui.writeChat(response.toString());
}
catch(Exception ex)
{
}
}
}
但是当调用该方法时,程序不再起作用了,因为服务器被淹没了。我想。
所以现在我的问题是:我如何检查来自服务器的新聊天消息?我需要使用httprequests,但我不知道如何。
答案 0 :(得分:1)
首先,您将循环发送此请求:
while(verbunden==true)
但你没有写任何暂停,所以只要收到回复,下一个请求就会发送,这意味着可能是100个请求/秒(基于响应时间)。
只需在循环中添加Thread.sleep(5000 /*5000ms*/);
即可添加一个小的中断。
PS:您可以使用两个Socket
在服务器和客户端之间进行通信,这样服务器就可以通知客户端有新消息。