Index
A
- Access Control Lists (ACLs) / Load balancing multiple application servers
- acknowledgements, Socket.io app / Acknowledgments
- AddRoom event / Finishing Socket.IO
- addUser function / Creating our Redis functions
- Advanced Message Queuing Protocol (AMQP) / Getting RabbitMQ
- Amazon Web Services (AWS)
- URL / Creating an S3 bucket
- Ansible
- about / What is Ansible?
- installing / Installing Ansible
- roles, using / Using Ansible roles
- summarizing / A summary of Ansible
- environments, creating / Creating new environments
- Ansible-created EC2 inventory script
- URL / Installing Ansible
- Ansible roles
- using / Using Ansible roles
- RabbitMQ, installing / Installing RabbitMQ
- application, installing / Installing our application
- workers, installing / Installing the workers
- multiple application servers, load balancing / Load balancing multiple application servers
- automating / Automating roles
- app
- config file, setting up / Setting up a config file for our app
- config file, setting up for / Setting up a config file for our app
- updating, for config usage / Updating our app to use the config
- app.use()
- about / Creating our own middleware
- app.use function / Very simple authentication
- application
- extending, methods used / Methods to extend an application
- Google authentication, adding to / Adding Google authentication to our application
- trying / Trying out our application
- application, Ansible
- installing / Installing our application
- code, deploying / Deploying the code
- application-specific events
- adding / Adding application-specific events
- application state
- storing, in Redis / Redis is for application state
- apt-get tool / Installing on Linux
- Audits tab, Chrome developer tools / Audits
- authentication
- about / Very simple authentication
- building / Let's build our authentication
- Google, used for / Using Google for authentication
- authorization
- used, in Socket.io / Authorization in Socket.IO
- authorization handler
- using / Using the authorization handler
- AWS EC2
- summarizing / AWS EC2 summary
B
- Backbone
- about / Introducing Backbone
- models, using / Using Backbone models
- collections, using / Using Backbone collections
- Backbone models
- about / Backbone models
- syncing, with Socket.IO / Syncing the models with Socket.IO
- creating / Creating the model
- collections, creating / Creating collections
- summarizing / Putting it all together
- Backbone router
- about / The Backbone router
- backend debugging / Backend debugging
- basic file, Grunt
- building / Building a basic Grunt file
- Bower
- installing / Installing and using Bower
- using / Installing and using Bower
- Bower package
- versions / Bower package versions
- browser side
- adding / Adding the browser side
C
- cards
- charging, in real-time / Charging cards in real time
- CDN
- about / Static files and CDNs
- chatAdd function / Creating React components
- Chrome developer tools, using
- CleanUp function / Adding a new worker
- CleanUpUsers function / Adding a new worker
- client
- building / Building the client
- code, Grunt
- concatenating / Concatenating our code
- minifying / Minifying our code
- code coverage
- Istanbul, using for / Using Istanbul for code coverage
- collection property / Creating React components
- collections, Backbone models
- creating / Creating collections
- componentDidUpdate function / Creating React components
- componentWillMount attribute / Introducing React
- componentWillMount function / Introducing React
- config
- used, via app update / Updating our app to use the config
- Socket.io, adding to / Adding Socket.IO to the config
- config file
- setting up, for app / Setting up a config file for our app
- fixing / Fixing the config file
- config file, setting up
- route mapping / Route mapping
- app, updating for config usage / Updating our app to use the config
- Console tab, Chrome developer tools / Console
- cookies
- used, in Express / Using cookies in Express
- Cosmo
- URL / Layouts
- CPU profiling
- about / CPU profiling our application
- CPUWaste function / CPU profiling our application
- Create Read Update Delete (CRUD) / Finishing Socket.IO
- creates option / Deploying the code
- Cross-Site Request Forgery (CSRF) / Cross-Site Request Forgery (CSRF)
- Crypto
- CSS
- updating / Updating CSS and the layout
D
- database
- adding / Adding a database
- data structures, Redis
- using / Using Redis data structures
- application, building / Building a simple Redis application
- data types, Redis
- string / Using Redis data structures
- hash data type / Using Redis data structures
- lists / Using Redis data structures
- sets / Using Redis data structures
- sorted set / Using Redis data structures
- using / Using Redis data structures
- debugging
- about / Debugging
- frontend debugging / Frontend debugging
- backend debugging / Backend debugging
- summarizing / Debugging summary
- DefaultRoute function / Putting it all together
- denial-of-service (DOS) / Processing forms
- destroy function / Syncing the models with Socket.IO
- disconnect event
- using / Using the disconnect event
- Document Object Model (DOM) / Introducing React
E
- EBS
- about / AWS EC2 summary
- EC2
- servers, creating on / Creating servers on EC2
- Elements tab, Chrome developer tools / Elements
- Embedded JavaScript (EJS) / Adding templates to the mix
- environment files
- creating / Creating our environment files
- environments
- setting up / Setting up different environments
- Twelve Factor App / Twelve Factor App
- config file, fixing / Fixing the config file
- adding / Adding more environments
- environments, Ansible
- creating / Creating new environments
- error.log queue
- about / Topic exchange
- EXPIRE command / Removing Redis keys
- Express
- used, in Node / Using Express in Node
- middleware, using / Using middleware in Express
- middleware, creating / Creating our own middleware
- sessions, using / Using sessions in Express
- cookies, using / Using cookies in Express
- sessions, adding / Adding sessions
- Redis, session store / Redis as a session store
- and Socket.io, using / Using Socket.IO and Express together
F
- Facebook
- authenticating, Passport used / Using Passport to authenticate to Facebook
- Facebook application
- registering / Registering a Facebook application
- files, Grunt
- preprocessing / Preprocessing our files
- flash messages
- about / Very simple authentication
- FLUSHDB command / Removing Redis keys
- forms
- processing / Processing forms
- Cross-Site Request Forgery (CSRF) / Cross-Site Request Forgery (CSRF)
- frontend debugging / Frontend debugging
- frontend memory leaks
- about / Frontend memory leaks
- creating / Frontend memory leaks
- fully qualified domain name (FQDN) / Using Passport to authenticate to Facebook
G
- Galaxy
- URL / A summary of Ansible
- getChat function / Finishing Socket.IO
- getDOMNode function / Introducing React
- GetMe function / Putting it all together
- GetRoom function / Finishing Socket.IO
- Google
- used, for authentication / Using Google for authentication
- Google authentication
- adding, to application / Adding Google authentication to our application
- Google Chrome
- Googles debugging documentation
- URL / Frontend debugging
- Grunt
- node package versions / Node package versions
- about / Introducing Grunt
- basic file, building / Building a basic Grunt file
- tests, automating / Automating our tests
- files, preprocessing / Preprocessing our files
- used, for emptying folder / Using Grunt to clean out a folder
- source files, JSHinting / JSHinting our source files
- code, concatenating / Concatenating our code
- code, minifying / Minifying our code
- summarizing / Grunt summary
- watch feature / Grunt summary
H
- HAProxy / Vertical
- hash, Redis data types / Using Redis data structures
- hash, Redis schema
- user*userid*hash / Using a hash
- user*username hash / Using a hash
- using / Using a hash
- heap snapshots
- obtaining / Taking heap snapshots
- frontend memory leaks / Frontend memory leaks
- used, for tracking memory leaks / Memory leak summary
- Heroku
- URL / Twelve Factor App
- Homebrew
- URL / Installing on Mac OS X
- horizontal scaling / Horizontal
I
- Identity and Access Management (IAM) / Creating an S3 bucket
- interaction
- creating / Creating some interaction
- Istanbul
- using, for code coverage / Using Istanbul for code coverage
J
- join event / Building our namespace client
- JoinRoom function / Putting it all together
- JSHint / JSHinting our source files
K
- keys, Redis
- rooms / Defining the Redis structures
- rooms*RoomName*chats / Defining the Redis structures
- rooms*RoomName / Defining the Redis structures
- users / Defining the Redis structures
- user*UserID / Defining the Redis structures
- user*UserID*room / Defining the Redis structures
- keys, Redis schema / Keys in Redis
L
- layout
- implementing / Layouts
- updating / Updating CSS and the layout
- layouts
- about / Layouts
- libraries function
- executing / Setting up tests
- Linux
- RabbitMQ, installing on / Installing on Linux
- Redis, installing on / Installing on Linux
- lists, Redis data types / Using Redis data structures
- logOut function / Very simple authentication
- logout function / Using Passport to authenticate to Facebook
M
- Mac OS X
- RabbitMQ, installing on / Installing on Mac OS X
- Redis, installing on / Installing on Mac OS X
- management interface
- using / Using the management interface
- map function / Creating React components
- memory leaks
- creating, on frontend / Frontend memory leaks
- tracking down, with heap snapshots / Memory leak summary
- me property / Creating React components
- message
- broadcasting / Broadcasting a message
- message queue
- about / Our first message queue
- management interface, using / Using the management interface
- messages, sending / Sending messages
- messages, queuing / Queuing messages
- worker, adding / Adding another worker
- Redis, using as / Using Redis as a message queue
- message queues
- adding, to PacktChat / Adding message queues to PacktChat, Topic exchange, Building the worker
- topic exchange, using / Topic exchange, Building the worker
- worker, building / Building the worker
- about / Message queuing in RabbitMQ
- messages
- sending / Sending messages
- queuing / Queuing messages
- sending back / Sending messages back
- StartServer, creating / Creating StartServer
- worker, building / Building the worker
- cards, charging in real-time / Charging cards in real time
- methods
- used, for extending application / Methods to extend an application
- middleware
- used, in Express / Using middleware in Express
- creating / Creating our own middleware
- multiple application servers
- load balancing / Load balancing multiple application servers
- MVC (Model, View, Controller)
- about / Methods to extend an application
N
- namespace client
- building / Building our namespace client
- namespaces
- creating / Creating namespaces
- namespace client, building / Building our namespace client
- using / Using namespaces or rooms
- about / Namespaces
- finding / Finding namespaces
- and rooms, using / Using namespaces and rooms together
- Network tab, Chrome developer tools / Network
- Node
- Express, using / Using Express in Node
- Node.js
- node packages
- about / Node.js and Node Package Manager
- versions / Node packages
- Node package versions
- node package versions, Grunt / Node package versions
- node package versions, Redis
- about / Node package versions
- npm
- about / Node.js and Node Package Manager
- using / Deploying the code
O
- OAuth
- about / OAuth process
- OAuth process / OAuth process
- OAuth providers
- adding / Adding more OAuth providers
P
- package
- installing / Installing the package
- package.json file
- about / Node.js and Node Package Manager
- PacktChat
- message queues, adding to / Adding message queues to PacktChat, Topic exchange, Building the worker
- Redis, adding to / Adding Redis to PacktChat
- pageCount session variable / Adding sessions
- parse method / Creating collections
- partial function / Very simple authentication
- Passport
- used, for authenticating Facebook / Using Passport to authenticate to Facebook
- Password-Based Key Derivation Function 2 (PBKDF2) / Adding secure local authentication
- password-storing theory
- about / Password-storing theory
- passwordCheck function / Adding secure local authentication
- passwordCreate function / Adding secure local authentication
- PBKDF2 (Password-Based Key Derivation Function 2) / Password-storing theory
- Personal Package Archive (PPA)
- using / Installing on Linux
- feature / Installing on Linux
- Ping-Pong / Ping-Pong
- ping event / Building our namespace client
- Platform as a Service (Paas) / Twelve Factor App
- postal.js / Introducing React
- Profiles tab, Chrome developer tools / Profiles
- Python
- used, for serving site / Using Python to serve our site
- Python script
- building / Python and installing virtual environments
Q
- Qunit
R
- RabbitMQ
- about / Getting RabbitMQ
- installing, on Mac OS X / Installing on Mac OS X
- installing, on Linux / Installing on Linux
- installing, on Windows / Installing on Windows
- message queueing / Message queuing in RabbitMQ
- installing / Installing RabbitMQ
- RabbitMQ installation, on Mac OS X
- RabbitMQ management plugin / The RabbitMQ management plugin
- RabbitMQ management plugin / The RabbitMQ management plugin
- React
- about / Introducing React
- URL / Introducing React
- features / Introducing React
- components, creating / Creating React components
- summary / React summary
- React components
- creating / Creating React components
- Read Evaluate Print Loop (REPL) / Using Redis as a message queue
- Redis
- used, for storing Socket.io / Using Redis as the store for Socket.IO
- node package versions / Node package versions
- installing / Installing Redis
- using, as message queue / Using Redis as a message queue
- adding, to PacktChat / Adding Redis to PacktChat
- features / Redis is for application state
- application state, storing in / Redis is for application state
- Redis, adding to PacktChat
- about / Adding Redis to PacktChat
- structures, defining / Defining the Redis structures
- functions, creating / Creating our Redis functions
- Redis, session store / Redis as a session store
- Redis application
- building / Building a simple Redis application
- Redis functions
- creating / Creating our Redis functions
- Redis installation
- about / Installing Redis
- on Mac OS X / Installing on Mac OS X
- on Linux / Installing on Linux
- on Windows / Installing on Windows
- on Windows, URL / Installing on Windows
- Redis keys
- removing / Removing Redis keys
- expiration method / Removing Redis keys
- Redis persistence
- about / Redis persistence
- Redis keys, removing / Removing Redis keys
- Redis schema
- building / Redis schema
- keys, adding / Redis schema
- hash,using / Using a hash
- keys / Keys in Redis
- Redis structures
- defining / Defining the Redis structures
- registration
- adding / Adding registration
- removeAllRooms function / Finishing Socket.IO
- removeClick function / Introducing React
- removeFromRoom function / Finishing Socket.IO
- removeUserFromRoom function / Creating our Redis functions
- render function / Introducing React, Creating React components
- representational state transfer (REST) / Finishing Socket.IO
- requests
- making / Who are you?
- inspecting / Inspecting requests
- Res.locals / Cross-Site Request Forgery (CSRF)
- Resources tab, Chrome developer tools / Resources
- roomFormEvent function / Putting it all together
- rooms
- adding / Adding rooms
- using / Using namespaces or rooms, When to use rooms
- finding / Finding rooms
- and namespaces, using / Using namespaces and rooms together
- RoomSelection function / Putting it all together
- route mapping / Route mapping
S
- S3 bucket
- creating / Creating an S3 bucket
- scalability
- about / Scalability
- types / Different types of scalability
- secret option / Adding sessions
- secure local authentication
- adding / Adding secure local authentication
- registration, adding / Adding registration
- database, adding / Adding a database
- servers
- creating, on EC2 / Creating servers on EC2
- sessions
- used, in Express / Using sessions in Express
- adding / Adding sessions
- about / Cookies and sessions
- SET command / Removing Redis keys
- SETEX command / Removing Redis keys
- set function / Using Backbone models
- sets, Redis collection types / Removing Redis keys
- sets, Redis data types / Using Redis data structures
- settings, app
- Socket.IO
- finishing / Finishing Socket.IO
- Backbone models, syncing with / Syncing the models with Socket.IO
- Socket.io
- and Express, using / Using Socket.IO and Express together
- adding, to config / Adding Socket.IO to the config
- authorization, used in / Authorization in Socket.IO
- authorization handler, using / Using the authorization handler
- cookies / Cookies and sessions
- sessions / Cookies and sessions
- obtaining / Getting the session
- storing, Redis used / Using Redis as the store for Socket.IO
- working / Socket.IO inner workings
- drawbacks / WebSockets
- Socket.io, working
- WebSockets / WebSockets
- Socket.io app
- building / Building a simple Socket.IO app
- Socket.io app, building
- package, installing / Installing the package
- client, building / Building the client
- Python, used for serving site / Using Python to serve our site
- Ping-Pong / Ping-Pong
- interaction, creating / Creating some interaction
- browser side, adding / Adding the browser side
- acknowledgements / Acknowledgments
- socketAuth function / Finishing Socket.IO
- sorted set, Redis collection types / Removing Redis keys
- sorted set, Redis data types / Using Redis data structures
- source files, Grunt
- JSHinting / JSHinting our source files
- Sources tab, Chrome developer tools / Sources
- StartServer
- creating / Creating StartServer
- static files
- about / Static files and CDNs
- string, Redis data types / Using Redis data structures
T
- templates
- adding, to mix / Adding templates to the mix
- layout, implementing / Layouts
- tests
- setting up / Setting up tests
- Istanbul, using for code coverage / Using Istanbul for code coverage
- tests, Grunt
- automating / Automating our tests
- this.MULTI() function / Building a simple Redis application
- Timeline tab, Chrome developer tools / Timeline
- tools
- scripting / Scripting our new tools
- topic exchange
- using / Topic exchange
- Twelve Factor App
- URL / Setting up different environments
- about / Twelve Factor App
- types, scalability
- horizontal / Horizontal
- vertical / Vertical
U
- Ubuntu / Installing on Linux
- Ubuntus package
- URL / Using Ansible roles
V
- vertical scaling / Vertical
- VirtualBox
- URL / Installing on Windows
- virtual environment, for Python
- creating / Python and installing virtual environments
W
- watch feature, Grunt / Grunt summary
- WebSockets / WebSockets
- Windows
- RabbitMQ, installing on / Installing on Windows
- Redis, installing on / Installing on Windows
- wireEvents function / Building our namespace client
- worker
- adding / Adding another worker, Adding a new worker
- building / Building the worker, Building the worker
- workers, Ansible
- installing / Installing the workers
Y
- Yet Another Markup Language (YAML) / Using Ansible roles
Z
- zadd function / Creating our Redis functions