4. Overview
• Start a base Ember-CLI project as a chat client
• Install ember-websockets module
• Create a basic application controller and template
• Start a base Python Tornado project as a chat server
• Create a Python virtualenv and install Tornado
• Create a basic Python websocket server
• Run the Python websocket server and Ember CLI client
• Magic!
5. Create Ember project
mkdir chatdemo
cd chatdemo
ember init
ember install ember-websockets
ember g initializer websocket
ember g route application
ember g controller application
7. Create a websocket initializer
Injects a ‘websockets’
object into all controllers
8. Setup main controller
Initializes websocket,
sets up handlers
Catches open event
on the websocket
Push received
messages into the
messages array
Constructs and sends
message to web
socket when user
presses send
9. Setup main template
Collect a name from
the user
Display all received
messages (or none)
Provide an entry field
for new messages
Display a Send button
tied to the
sendMessage action
10. Let’s see what we have so far
ember server
Ugly but does the job.
Browser is trying to
connect to WebSocket
endpoint
12. Create a simple server.py
Extend from Tornado
WebSocketHandler
When a new client
connects, add them to
a list of clients
When a message is
received, broadcast to
all registered clients
When a client
disconnects, remove
them from the list
15. Limitations / Improvements
• No authentication / user models
• Implement JWT or similar mechanism
• No chat history / archive
• Need some kind of persistent data store for message
backlog to be more ‘Slack-like’
• Fragile message distribution / queue
• Implement redis or better yet Amazon Simple Queue
Service
16. That’s all!
Thanks to Heather Brysiewicz + Erik Hanchett
Code from this talk:
github.com/derekbedwards/ember-python-chat
—
@derekbedwards
github.com/derekbedwards
linkedin.com/in/derekbedwards