客户端检查httprequest是否有新数据

时间:2018-04-27 10:23:43

标签: java http httprequest

我目前正在为学校开展聊天项目,其中两个客户端可以通过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,但我不知道如何。

1 个答案:

答案 0 :(得分:1)

首先,您将循环发送此请求:

while(verbunden==true)

但你没有写任何暂停,所以只要收到回复,下一个请求就会发送,这意味着可能是100个请求/秒(基于响应时间)。

只需在循环中添加Thread.sleep(5000 /*5000ms*/);即可添加一个小的中断。

PS:您可以使用两个Socket在服务器和客户端之间进行通信,这样服务器就可以通知客户端有新消息。