Websockets for two-way communication
You have almost definitely experienced websockets on your favorite web applications before. They are a tool that helps to create a super-rich layer of user experience and can be used in a wide variety of contexts. While SSEs are, essentially, just an open stream that has not yet been terminated, websockets are something completely different.
Plain vanilla HTTP is just a specification (or protocol) for how messages can be formatted and transmitted over a TCP connection between machines. Websockets are a separate protocol complete with directions on how messages should be formatted, sent, received, and more. The specification for them is really quite involved, and we could probably devote an entire book to just discussing websockets. Instead, we will simply focus on their implementation within Sanic. The one technical detail about websockets that is worth mentioning is that they begin their life as a normal HTTP connection. The request comes in...