To your users, push notifications seem completely obvious; something happened and this app is letting me know. In the background, there are a lot of things going on to make those notifications a reality. There are persistent socket connections to manage, binary protocols to navigate, and reliability issues to keep in mind. We'll take a look at the basics of what is needed to send push notifications from scratch, some of the pitfalls of doing it yourself, as well as mentioning some third party services that can help you along the way.