WebSockets Crash Course - Handshake, Use-cases, Pros & Cons and more
WebSockets technology is a bidirectional, full-duplex protocol for communication between client and server over the web. It has been standardized in 2011 and its fully compatible with HTTP. This protocol enables realtime applications such as chatting, notifications, live feed , multiplayer gaming and otheruse cases. In this video we will explain what WebSockets are and why it was invented. we will then build a server and client using WebSockets. We will also talk about the pros and cons of WebSockets, and discuss some alternatives to this technology Chapters 0:00 Intro 2:00 HTTP 5:40 WebSockets 8:00 WebSockets Handshake 11:20 WebSockets Usecases 14:30 WebSockets Example Code 36:40 WebSockets Pros and Cons 42:10 Do you have to use webSockets? Source Code in the video for WebSockets https://github.com/hnasr/javascript_playground/tree/master/websocket-demo HTTP * talk about request-response show a slide. Client initiate request all the time. Imagine building a chatting app? WebSockets - Slide showing bidrectional full duplex standard web - How WebSockets Work? - WebSockets handshake - Initial request is always HTTP which we all know creates a tcp connection, that request then http upgrade tells the server to use it as bidirectional. - Once done switches to binary protocol. - Ws:// wss:// protocol WebSocket use cases - Chatting - Live feeds - Multiplayer gaming - Progress bar/ logging/ uploading.. - WebSockets example (Server/Client) - WebServers Pros and Cons Pros 1. Full-duplex no need for constant polling 2. compatible with HTTP, so proxies know to deal with it 3. Firewalls won’t block it doesn’t use a special port Cons 1. Proxying is tricky, lots of proxies and transparent proxies don’t support it yet 2. Layer 7 load balancing is tricky, timeouts on the load balancer. 3. More complicated to implement (simple telnet use HTTP) 4. Not ideal for all use cases - (microservices) - Do you have to use Web Sockets ? ( alternatives ) It is important to note that WebSockets is not the only HTTP realtime based solution, there are other ways to achieve real time such as eventsource, and long polling. - Load Balancing with WebSockets (bonus) - layer 4 - Layer 7 (tunnel) Longpolling Eventsource WebSockets Sources: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers https://www.ably.io/concepts/websockets https://link.medium.com/ljsSOsnW6Y https://blog.stanko.io/do-you-really-need-websockets-343aed40aa9b Cards HTTP Crash Course https://www.youtube.com/watch?v=0OrmKCB0UrQ TLS https://www.youtube.com/watch?v=AlE5X1NlHgg What is a Web Servers https://www.youtube.com/watch?v=JhpUch6lWMw Layer 4 vs Layer 7 Load Balancing https://www.youtube.com/watch?v=aKMLgFVxZYk Support my work on PayPal https://bit.ly/33ENps4 Become a Member on YouTube https://www.youtube.com/channel/UC_ML5xP23TOWKUcc-oAE_Eg/join 🧑🏫 Courses I Teach https://husseinnasser.com/courses 🏭 Backend Engineering Videos in Order https://backend.husseinnasser.com 💾 Database Engineering Videos https://www.youtube.com/playlist?list=PLQnljOFTspQXjD0HOzN7P2tgzu7scWpl2 🎙️Listen to the Backend Engineering Podcast https://husseinnasser.com/podcast Gears and tools used on the Channel (affiliates) 🖼️ Slides and Thumbnail Design Canva https://partner.canva.com/c/2766475/647168/10068 🎙️ Mic Gear Shure SM7B Cardioid Dynamic Microphone https://amzn.to/3o1NiBi Cloudlifter https://amzn.to/2RAeyLo XLR cables https://amzn.to/3tvMJRu Focusrite Audio Interface https://amzn.to/3f2vjGY 📷 Camera Gear Canon M50 Mark II https://amzn.to/3o2ed0c Micro HDMI to HDMI https://amzn.to/3uwCxK3 Video capture card https://amzn.to/3f34pyD AC Wall for constant power https://amzn.to/3eueoxP Stay Awesome, Hussein