繁体   English   中英

从Android到Node.js服务器的持久HTTP连接

[英]Persistent HTTP-connection from Android to Node.js server

我正在尝试实现一些通信方案,以处理从Android设备到Node.js服务器的HTTP请求。 使用当前代码,Android端会在收到标头的响应后关闭连接。

Java:

public String doInBackground(Void... params) {
    URL url = new URL("http://" + mServer.getHost() + ":" + mServer.getPort() + "/" + mPath);
    HttpURLConnection http = (HttpURLConnection) url.openConnection();
    http.setConnectTimeout(TIMEOUT);
    http.setRequestMethod("POST");
    http.setDoOutput(true);
    http.connect();

    OutputStream out = http.getOutputStream();
    OutputStreamWriter writer = new OutputStreamWriter(out);
    writer.write(mJson);
    writer.flush();
    writer.close();

    mResponseCode = http.getResponseCode();
    if (mResponseCode != 200) {
        http.disconnect();
        return "";
    }

    InputStreamReader in = new InputStreamReader(http.getInputStream());
    BufferedReader br = new BufferedReader(in);

    char[] chars = new char[BUF_SIZE];
    int size = br.read(chars);

    String response = new String(chars).substring(0, size);
    //http.disconnect();
    return response;
}

节点:

this.socket = http.createServer((req, res) => {

    req.on('data', (chunk) => {
        this.log.info("DATA");
        obj = JSON.parse(chunk.toString());
    });

    req.on('close', () => {
        this.log.info("CLOSE");
    });

    req.on('connection', (socket) => {
        this.log.info("CONNECTION");
    });

    req.on('end', () => {
        this.log.info("END");    
    });
});

this.socket.listen(this.port, this.host);

此外,从不调用节点端的connection事件,每个请求都直接通过管道传递到data事件中。

有没有一种方法可以建立持久的HTTP连接,以便在连接运行之前,节点服务器可以跟踪它,直到Android端再次关闭它为止?

Socket.io似乎是实现从Android到Node.js服务器的持久连接的合理库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM