【发布时间】:2018-04-27 10:23:43
【问题描述】:
我目前正在为学校开发一个聊天项目,其中两个客户端可以通过 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,但我不知道如何。
【问题讨论】:
-
我们有必要使用 HTTP 吗?因为
Sockets似乎是一种更好的方法。无论如何,你可以调试“当方法被调用时程序不再工作。”因为你似乎知道会发生什么?checkChat怎么称呼?编辑:噢……while(true)。您可能希望在该循环中添加一个暂停,以防止它每毫秒执行一次。在收到响应的那一刻,发送下一个请求......如果它在 GUI 线程中运行,那么您将永远不会看到新消息。 -
@AxelH 感谢您的回答!是的,我们需要为此使用 http,但我也不知道如何使用套接字来实现。是的,我可以调试我的代码,但它只是一直循环,所以聊天框不会更新。我将尝试暂停 while 循环,但我仍然不知道如何在不淹没服务器的情况下检查新数据
-
Websockets 是用于聊天相关应用程序的方式。
标签: java http httprequest