我想做一个聊天应用程序,我在GitHub上找到了这个代码:https://github.com/Pirngruber/AndroidIM。作者创建了一个函数来发送一条看起来像这样的消息
public String sendHttpRequest(String params)
{
URL url;
String result = new String();
try
{
url = new URL(AUTHENTICATION_SERVER_ADDRESS);
HttpURLConnection connection;
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
PrintWriter out = new PrintWriter(connection.getOutputStream());
out.println(params);
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
result = result.concat(inputLine);
}
in.close();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
if (result.length() == 0) {
result = HTTP_REQUEST_FAILED;
}
return result;
}
private static final String AUTHENTICATION_SERVER_ADDRESS = "http://192.168.0.102/android-im/index.php";
他也在这里解释了如何让它运行 https://code.google.com/archive/p/simple-android-instant-messaging-application/
所以,我的问题是:据我所知,作者将所有消息发送到他的服务器,并在此服务器将其发送给用户之后。所以,如果关闭电脑,服务器不会工作,他的聊天也不会起作用,是不是?如果是,有人可以解释我如何在没有服务器的情况下进行聊天应用吗?
谢谢
答案 0 :(得分:0)
您需要的是P2P聊天实现,您可以在Android中直接使用WIFI。查看此代码:https://github.com/life0fun/wifi-direct-chat
通常聊天应用需要有一个中央服务器来接收消息并将其发送到正确的节点。您粘贴的代码就是这种实现。
答案 1 :(得分:0)
是的,似乎需要服务器始终在线。但这就是智能手机上所有现代聊天应用的工作原理(Telegram,Whatsapp,Threema,所有谷歌聊天......)。如果没有服务器,您将依赖于两个智能手机同时在线以建立直接连接的事实。这是一个巨大的缺点,并且不利于移动OS的任何节电功能。如果他们在不同时间总是在线,那么双方也很难沟通。
所以基本上你需要自己决定是否真的需要点对点或基于服务器的聊天。请记住,即使在P2P的情况下,您也必须弄清楚其他聊天客户端的IP地址。然后你可能不得不再次使用某种服务器。
答案 2 :(得分:0)
有许多实时服务可以帮助您构建聊天应用程序(不使用您的服务器)。
您可以使用Pubnub构建聊天应用。它在响应时间方面很棒。您可以查看此内容以获取更多详细信息:
答案 3 :(得分:0)
是的,没错。您提供的代码需要使用服务器。 大多数现代解决方案都需要服务器进行用户身份验证,并将用户与其接收者连接起来。 许多后端提供程序都提供服务器端解决方案以及用于构建聊天应用程序的开源SDK。 以下是一些提供程序:
等
您可以从提供的功能和服务方面选择更适合您的一种,然后尝试一下。