NSMutableURLRequest конвейерная путаница

Я хочу загрузить много изображений с одного и того же HTTP-сервера, поэтому я хочу сделать все это на одном и том же TCP-соединении. Все, что я могу найти, это то, что NSMutableURLRequest позволяет мне включить конвейерную обработку (HTTPShouldUsePipelining), но я не понимаю, как он знает, какие запросы отправлять вместе, когда я включаю конвейерную обработку.

Я попробовал это, и согласно Wireshark, эти два запроса и ответы находятся в отдельных потоках TCP, поэтому не похоже, что это на самом деле конвейерная обработка запросов:

    var request0 = NSMutableURLRequest(URL: NSURL(string: "http://strabo.com/gallery/albums/wallpaper/foo_wallpaper.sized.jpg")!)
    var request1 = NSMutableURLRequest(URL: NSURL(string: "http://strabo.com/gallery/albums/wallpaper/foo_wallpaper.sized.jpg")!)
    request0.HTTPShouldUsePipelining = true
    request1.HTTPShouldUsePipelining = true
    var queue = NSOperationQueue()
    NSURLConnection.sendAsynchronousRequest(request0, queue: queue) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
        println("response0")
    }
    NSURLConnection.sendAsynchronousRequest(request1, queue: queue) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
        println("response1")
    }

Я также попробовал на своем локальном сервере Nginx на тот случай, если Strabo.com не поддерживает конвейерную обработку.

Также, SDWebImageDownloader как-то использует HTTP-конвейеризацию, я заметил. Я вижу, что несколько запросов отправляются в одном потоке TCP. Однако он не отправляет их все в один поток, и я хочу это сделать, поэтому я пытался реализовать собственный загрузчик.

0 ответов

Другие вопросы по тегам