From my experience WebSockets are harder at scale. For load balancing you either need sticky sessions or an L7 proxy that can route consistently, and reconnect storms amplify this. Long-lived upgraded connections mean more complexity with rolling deploys, drains, autoscaling, and regional failover. Many managed LBs/proxies have tighter limits/timeouts for WS, so you must tune idle timeouts and ping/pong.