我正在尝试向我的 Android 应用程序添加网络服务器。我所拥有的功能在用户第一次访问服务器时有效,但如果他们刷新,我如何在他们刷新页面时向他们显示更新的内容?
new Thread(() -> {
try {
ServerSocket serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(8080));
Socket clientSocket = serverSocket.accept();
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
out.write("HTTP/1.0 200 OK\r\n");
out.write("Content-Length: 59\r\n");
out.write("\r\n");
out.write("<html>");
out.write("<style>");
out.write("body{margin: 12px;}");
out.write("</style>");
out.write("<title>Web Server</title>");
//output dynamic data
out.write("</html>");
out.close();
clientSocket.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}).start();
一些事情:
1)Android 不是一个好的服务器操作系统。如果应用程序不在前台,服务会很快被终止。不建议在 Android 上运行 HTTP 服务器。这条路上有很多痛苦。
2)HTTP 不是这样工作的。您不会收到更新 - HTTP 是一次性请求和返回。如果你想这样做,你要么需要轮询刷新页面,你需要创建一个 Web 端点,轮询它,并使用它来获取数据并在 javascript 中自己构建页面,或者你需要使用 websocket 来执行此操作与选项 2 相同。它们都不是像构建 HTTP 服务器那么简单。