I have spent a ton of time refining use of sockets and test automation these past years in personal projects. These are winning me employment in areas that are far less opinionated.
I learned a couple of things from dealing with sockets:
* It dramatically simplified my application architecture with regard to any kind of network services or web application.
* It made every aspect of my application event-oriented. That means no network polling, no round trip delays, no performance bottle necks. Everything becomes super concurrent as network messaging is fire and forget. I suspect UDP would be even faster, but I have not tried it. I am reluctant to give up the fidelity of TCP for UDP.
* It allows radical scale of network services and everything reliant upon network services in ways I could not do before. I simply receive unexpected network messages and then handle them according to the respective message type. I can bolt on new service functionality without refactoring anything.
I have nothing to provide. It was all trial and effort on hobby code refactoring the architecture of a personal application and writing an original WebSocket client/server.
I did spend a lot of time trying to make sense of RFC6455. I also spent a lot of time trying to get self-signed localhost TLS certificates working cross-OS and this is a continuous struggle.
Here is a video link to my test automation system. The video is very old. Since then I have abandoned HTTP in favor of web sockets and it executes about 7 times faster and requires less maintenance.