Online visitors

People learning around the world

Online

—

Visitors exploring W3Schools

Online visitors by country Circles show approximate country locations. The country list provides the visitor counts.

Circles represent countries, not exact visitor locations.

Country

Online

Loading country activity…

    Node.js Built-in WebSocket Client

    Node.js Tutorials


    Modern Node.js provides a built-in WebSocket client, so applications can connect to WebSocket servers without installing a separate client library for basic use cases.

    WebSockets keep one connection open so the client and server can exchange messages in both directions. They are useful for live dashboards, notifications, chat, device telemetry, and other real-time features.

    Use Node.js 22.4 or later for the stable built-in client. You still need a real WebSocket server; wss://example.com/socket below is a placeholder, not a working echo service.

    Create a WebSocket

    Example:

    const socket = new WebSocket('wss://example.com/socket');

    Use wss:// for an encrypted WebSocket connection.

    Wait for the Connection

    Example:

    socket.addEventListener('open', () => {
      console.log('Connected');
    });

    The open event fires after the WebSocket handshake succeeds.

    Send a Message

    Example:

    socket.addEventListener('open', () => {
      socket.send(JSON.stringify({
        type: 'subscribe',
        channel: 'prices'
      }));
    });

    WebSocket messages can contain text or binary data. JSON is a common application-level format for text messages.

    Receive Messages

    Example:

    socket.addEventListener('message', event => {
      console.log('Received:', event.data);
    });

    Always validate incoming data before assuming it matches the format your application expects.

    Handle Errors

    Example:

    socket.addEventListener('error', event => {
      console.error('WebSocket error');
    });

    The error event tells you the connection encountered a problem, but applications often need additional state or logging to decide whether to reconnect.

    Handle Closure

    Example:

    socket.addEventListener('close', event => {
      console.log('Closed:', event.code, event.reason);
    });

    Close the Connection

    Call this from the part of your application that has finished its work, not immediately after constructing the socket:

    Example:

    if (socket.readyState === WebSocket.OPEN) {
      socket.close(1000, 'Finished');
    }

    Status code 1000 represents a normal closure.

    Ready States

    State Meaning
    CONNECTING The connection is being established
    OPEN Messages can be sent and received
    CLOSING The close handshake is in progress
    CLOSED The connection is closed

    Reconnection

    The WebSocket API does not automatically reconnect. If reconnecting is appropriate, add backoff and a retry limit so an outage does not create a tight reconnect loop.

    Do not treat every disconnect as an error. Mobile networks, server deployments, idle timeouts, and normal shutdowns can all close a WebSocket.

    Conclusion

    The built-in Node.js WebSocket client covers the core client workflow: connect, wait for open, send and receive messages, react to errors, and close cleanly. Add validation and reconnection logic according to the needs of your application.



    Found This Page Useful? Share It!
    Get the Latest Tutorials and Updates
    Join us on Telegram

    Notifications

    Updates are enabled for this browser.

    Receive new tutorials, articles and learning resources. You can turn updates off anytime.