Understanding WebSockets Under The Hood