Claude Code realtime

WebSocket Drops Connection with No Automatic Reconnection

Your application's WebSocket connection drops after network interruptions, server restarts, or idle timeouts, and never attempts to reconnect. Users see stale data, missing notifications, and a broken real-time experience until they manually refresh the page.

WebSocket connections are inherently fragile. Mobile networks switch between WiFi and cellular, laptops sleep and wake, load balancers have idle timeouts, and servers restart during deployments. Without automatic reconnection, every one of these common events breaks your app for affected users.

The issue is worst on mobile devices where network conditions change frequently. Users may not realize their connection is dead until they wonder why they haven't received any updates in minutes.

Error Messages You Might See

WebSocket connection closed unexpectedly WebSocket is already in CLOSING or CLOSED state Error: Connection timeout failed: Connection reset by peer WebSocket handshake: 502 Bad Gateway
WebSocket connection closed unexpectedlyWebSocket is already in CLOSING or CLOSED stateError: Connection timeoutfailed: Connection reset by peerWebSocket handshake: 502 Bad Gateway

Common Causes

  • No reconnection logic — The code creates a WebSocket connection but has no 'onclose' or 'onerror' handler to trigger reconnection
  • Single connection attempt — The connection is established once on page load and never retried
  • Missing heartbeat/ping — No keepalive mechanism to detect dead connections before the OS TCP timeout (which can be minutes)
  • Server-side idle timeout — Load balancers or proxies (Nginx, Cloudflare) close idle WebSocket connections after 60-120 seconds
  • No state recovery after reconnect — Even when reconnection works, missed messages during the disconnection are never recovered

How to Fix It

  1. Implement exponential backoff reconnection — On disconnect, retry at 1s, 2s, 4s, 8s, 16s intervals up to a maximum of 30s. Add jitter to prevent thundering herd
  2. Add client-side heartbeat — Send a ping message every 30 seconds and expect a pong within 5 seconds. If no pong, treat the connection as dead and reconnect
  3. Use a WebSocket library with built-in reconnection — Libraries like reconnecting-websocket, Socket.IO, or Ably handle reconnection automatically
  4. Implement message recovery — Track the last received message ID. On reconnect, request missed messages from the server since that ID
  5. Show connection status to users — Display a banner when disconnected so users know data may be stale

Real developers can help you.

Alvin Voo Alvin Voo I’ve watched the tech landscape evolve over the last decade—from the structured days of Java Server Pages to the current "wild west" of Agentic-driven development. While AI can "vibe" a frontend into existence, I specialize in the architecture that keeps it from collapsing. My expertise lies in the critical backend infrastructure: the parts that must be fast, secure, and scalable. I thrive on high-pressure environments, such as when I had only three weeks to architect and launch an Ethereum redemption system with minimal prior crypto knowledge, turning it into a major revenue stream. What I bring to your project: Forensic Debugging: I don't just "patch" bugs; I use tools like Datadog and Explain Analyzers to map out bottlenecks and resolve root causes—like significantly reducing memory usage by optimizing complex DB joins. Full-Stack Context: Deep experience in Node.js and React, ensuring backends play perfectly with mobile and web teams. Sanity in the Age of AI: I bridge the gap between "best practices" and modern speed, ensuring your project isn't just built fast, but built to last. Costea Adrian Costea Adrian Embedded Engineer specilizing in perception systems. Latest project was a adas camera calibration system. Mehdi Ben Haddou Mehdi Ben Haddou - Founder of Chessigma (1M+ users) & many small projects - ex Founding Engineer @Uplane (YC F25) - ex Software Engineer @Amazon and @Booking.com Daniel Vázquez Daniel Vázquez Software Engineer with over 10 years of experience on Startups, Government, big tech industry & consulting. Tejas Chokhawala Tejas Chokhawala Full-stack engineer with 5 years experience building production web apps using React, Next.js and TypeScript. Focused on performance, clean architecture and shipping fast. Experienced with Supabase/Postgres backends, Stripe billing, and building AI-assisted developer tools. Luca Liberati Luca Liberati I work on monoliths and microservices, backends and frontends, manage K8s clusters and love to design apps architecture Basel Issmail Basel Issmail ’m a Senior Full-Stack Developer and Tech Lead with experience designing and building scalable web platforms. I work across the full development lifecycle, from translating business requirements into technical architecture to delivering reliable production systems. My work focuses on modern web technologies, including TypeScript, Angular, Node.js, and cloud-based architectures. I enjoy solving complex technical problems and helping teams turn product ideas and prototypes into working platforms that can grow and scale. In addition to development, I often collaborate closely with product managers, business analysts, designers, and QA teams to ensure that solutions align with both technical and business goals. I enjoy working with startups and product teams where I can contribute both as a hands-on engineer and as a technical partner in designing and delivering impactful software. rayush33 rayush33 JavaScript (React.js, React Native, Node.js) Developer with demonstrated industry experience of 4+ years, actively looking for opportunities to hone my skills as well as help small-scale business owners with solutions to technical problems Prakash Prajapati Prakash Prajapati I’m a Senior Python Developer specializing in building secure, scalable, and highly available systems. I work primarily with Python, Django, FastAPI, Docker, PostgreSQL, and modern AI tooling such as PydanticAI, focusing on clean architecture, strong design principles, and reliable DevOps practices. I enjoy solving complex engineering problems and designing systems that are maintainable, resilient, and built to scale. Dor Yaloz Dor Yaloz SW engineer with 6+ years of experience, I worked with React/Node/Python did projects with React+Capacitor.js for ios Supabase expert

You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.

Get Help

Frequently Asked Questions

Why does my WebSocket disconnect after 60 seconds of inactivity?

Most load balancers and reverse proxies (Nginx, Cloudflare, AWS ALB) have a default idle timeout of 60-120 seconds. Send periodic ping messages (every 30s) to keep the connection alive, or increase the proxy timeout.

Should I use WebSocket or Server-Sent Events?

Use WebSocket for bidirectional communication (chat, collaborative editing). Use SSE for server-to-client only (notifications, live updates). SSE has built-in reconnection and is simpler to implement.

Related Claude Code Issues

Can't fix it yourself?
Real developers can help.

You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.

Get Help