Re: How can I get a single threaded network call in ObjC on iOS?
Re: How can I get a single threaded network call in ObjC on iOS?
- Subject: Re: How can I get a single threaded network call in ObjC on iOS?
- From: Jens Alfke <email@hidden>
- Date: Tue, 28 Jun 2016 14:56:45 -0700
> On Jun 28, 2016, at 12:52 PM, Jim Adams <email@hidden> wrote:
>
> I have an application that has the requirement that the accesses to the server be single threaded, i.e. the second request cannot go through until the first request has completed.
That’s pretty unusual. I take it this is a restriction of the server, i.e. that it can only handle one HTTP request at a time from a client?
> I am using NSURLSession and NSURLSessionDataTask. I have set the Maximum Concurrent Host number in the configuration to 1 but I have seen evidence that there are simultaneous requests going up to my servers.
You mean HTTPMaximumConnectionsPerHost? If you set that you’ve limited the number of sockets to one, and HTTP 1.x doesn’t multiplex requests on a socket, so you won’t be sending any simultaneous requests.
You might need to turn pipelining off (I think it’s off by default, but better safe than sorry.)
> My evidence comes from looking in the server logs. I have 3 servers in AWS behind an ELB. If I am able to get the cookies back from the server before sending the next request then my request will go to the same server that the last request went to. If I don’t wait then then the request goes to a random server. If I watch the logs I can see the requests come in on multiple servers.
That’s odd. I suggest using a tool like HTTPScoop to watch how the requests are being sent on the client.
—Jens
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden