美文网首页
HTTP请求 服务端收到了请求写入了数据库,但是客户端没收到响应

HTTP请求 服务端收到了请求写入了数据库,但是客户端没收到响应

作者: docManer | 来源:发表于2020-05-16 13:20 被阅读0次

    先给结论。这种情况是存在的

    下面给出演示的例子

    有2个部分:服务端和客户端

    1.服务端,使用node.js做一个简单的客户端,这里使用菜鸟教程的一个例子来修改,文件名称:express_demo.js

    var http = require('http');
    var sleep = require('sleep');
    
    http.createServer(function (request, response) {
    
        // 发送 HTTP 头部 
        // HTTP 状态值: 200 : OK
        // 内容类型: text/plain
        response.writeHead(200, {'Content-Type': 'text/plain'});
    
        sleep.sleep(3)
    
        console.log('写入数据完成');
    
        // 发送响应数据 "Hello World"
        response.end('Hello World\n');
    }).listen(8888);
    
    // 终端打印如下信息
    console.log('Server running at http://127.0.0.1:8888/');
    
    

    2.客户端,使用iOS平台作为客户端,代码如下

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            
        }
        
        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
            let url = URL(string: "http://127.0.0.1:8888/")!
            let request = URLRequest(url: url, timeoutInterval: 1)
            let task = URLSession.shared.dataTask(with: request) { (data, resp, error) in
                if let e = error {
                    print(e)
                }
            }
            task.resume()
        }
    
    }
    
    

    解释一下,服务端接收到请求之后,sleep了3秒,客户端设置为1秒超时

    运行后发现,客户端总是报超时Error,而服务端还能在客户端超时之后写入数据,这个时候服务端的数据被改写了,但是客户端不知道服务端的数据被改写,因为没有相应到客户端

    相关文章

      网友评论

          本文标题:HTTP请求 服务端收到了请求写入了数据库,但是客户端没收到响应

          本文链接:https://www.haomeiwen.com/subject/jqwlohtx.html