Discussion
Pushing info to clients
Long Polling
Client sends request to server, waits for response or timeouts (Loop) Can send and receive information, but not full-duplex iOS Implementation
NSURLConnection sendSynchronousRequest
Common uses
Fallback from Websockets and SSE when streams are unreliable or impractical
HTTP Streams
Can only push information to your client If you need to send info back to server use standard rest approach Transported over simple HTTP Built in support for re-connection and event-id iOS Implementation
Server Sent Events (SSE) NSURLSession, NSInputStream, NSSteamEvent Setup the connection Implement code to handleEvents from the input stream
Common uses
Stock ticker streaming “Status” feed updating Push Notifications
Websockets
Designed to overcome many of the pitfalls/shortcomings described in RFC 6202 Standardized by IETF (Internet Engineering Task Force) in 2011 Can send and receive information (full-duplex pipe) Protocol based on TCP Uses HTTP only for initial handshake, while leveraging existing HTTP infrastructure iOS Implementation
CFStreamCreatePairWithSocketToHost takes url, read and write stream Cast read and write stream to NSInputStream and NSOutputStream, respectively Set delegate for input and output streams Schedule both in a run loop (Can do without but will block the execution of other code) Open connection Write code to handleEvents from the input stream Implement message sending via the output stream
Server considerations
Not as easy to get started with as a generic web server Buy one, borrow one or build one
Common uses
Chat Player vs. Player games Real time interactions
Popular Abstractions/Frameworks
TRVSEventSource from Travis Jeffery SignalR from Microsoft
At-a-glance Comparison
Websockets SSE Long Polling
Client Performance Best Best Worst
Server Performance Best Worst Worst
Complexity Highest Lowest Mid
When to Use 2-way messaging Push to Client Just getting started
Picks
Darryl
Proportional Spacing with Auto Layout
John
Google Cloud Vision API Detects types of images, landmarks, recognizes text, does image sentiment analysis and can even detect “inappropriate content” Agile and Beyond 2016 May 5-6 in Ypsilanti, MI
Alternative show title suggestions
Uncanny valley The cooker's always on Canonical Framing Technique