Listen

Description

Discussion

HTTP/1.1 review

Widespread adoption in 1996 with full standard in 1997 RFC 2068 and later replaced with one in 1999 RFC 2616
Request (URL, method, headers, body) & Response (status code, headers, body)
Inherently async
Built for HyperText, makes it have problems

Head of line blocking

combining payloads to 1 response
multiple connections (Connection: Keep-Alive vs Close)
HTTP Pipelining

No cancellation, have to tear down connection
No prioritization, round robin over connections

iOS/Mac

NSURLRequest (NSHTTPURLRequest) and NSURLResponse (NSHTTPURLResponse)
NSURLConnection and NSURLSession

HTTP/2

Started by Google with SPDY (2012 - 2016), latest is SPDY/3.1
HTTP/2 is a binary protocol, where 1 and 1.1 are text
Previous episode on SPDY with M Schore
Reached standard in 2015 with RFC 7540 and adopted by Apple with iOS 9, Mac OS X 10.11
Resolves many issues with new features:

multiplexing (helps with head of line problem in HTTP/1.1)

cancellation
header compression

Always there
plain text, optimal for compression

dynamic prioritization

be responsible, set lower priority when possible

not guaranteed that the server will prioritize because it is optional in HTTP/2 spec
push responses (Nolan’s not a fan)

not supported by Apple

Upgrade to HTTP/2 dynamically with Upgrade Header or ALPN

Application Layer Protocol Negotiation, ALPN is during TLS and far more efficient than Upgrade header
NPN (Next Protocol Negotiation)

Picks

Nolan

Akamai HTTP/2 Demo - Good info at https://http2.akamai.com
HTTP/2 Test - Test supported domains

Darryl

What Every iOS Developer Should Be Doing With Instruments - Great introduction to Instruments by Kevin Kazmeirczak

John

ClockKit Tutorial: Add Complication to an Already Existing Watch Project from Kristina Thai

Jason

RescueTime - Time management software