Tic-Tac-Toe App with Tornado & WebSockets
Ramesh Sampath
@sampathweb (github / twitter / linkedin)
Objective
Build and Deploy a Tic-Tac-Toe App that we can play with Friends.
Audience
Agenda
Tic-Tac-Toe App (Command Line)
Tic Tac Toe
Source: Wikipedia
Demo
Command Line Version
Tic-Tac-Toe - Play with Human
Two Player Version
Web Server
Want to Play Other
Web App
Clients
Web Server
Request
Response
Web App (Python)
Web App
Two Player Version
Web Server
Want to Play Other
Web App
WebSockets
WebSockets
WebSocket is a protocol providing full-duplex communication channels over a single TCP connection. (RFC 6455)
WebSockets
WebSockets API
WebSockets
Handler
Open Socket Connection
Handler
Handler
Handler
Handler
Application
G
A
M
E
S
T
A
T
E
WebSockets
Async Stack
Credits: Anton Caceres - Better asynchronous code with Tornado and Python 3 [EuroPython 2015]
Tornado
Tornado - When to use it
Demo!
Code Walkthrough
Open Text Editor
Things to Lookout For
Deploy to AWS
Deploy Steps
Deployment
Handler
Application
S
T
A
T
E
Handler
Handler
Handler
Supervisor Process
Scaling App
Handler
Application
S
T
A
T
E
Handler
Handler
Handler
Handler
Application
S
T
A
T
E
Handler
Handler
Handler
Not Connected
Problems
Scale with Pub/Sub
Load Balancer
(Nginx)
Clients
Tornado Process #1
Tornado Process #2
Tornado Process #3
Tornado Process #4
Supervisor Process
Pub / Sub (Redis)
WebSockets
Starts with HTTP Handshake
Web Server
Web App (Python)
Client
Client
Client
Client