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