QA
Beginner LevelExpress JS

What does app.listen() return and how do you use the returned http.Server instance for WebSockets?

❓ Interview Prompt: Explain app.listen(), underlying native node:http Server instance, attaching WebSockets (ws/Socket.IO), and server.close().

'app.listen(port)' is convenience shorthand for creating and starting a native Node.js HTTP server:

'http.createServer(app).listen(port)'.

Returned Instance:

It returns the underlying 'http.Server' instance. This server instance is required when attaching WebSocket servers ('ws' or 'Socket.IO') on the same port or initiating graceful server shutdown ('server.close()').

Code Implementation Example

javascript
import express from 'express';
import { WebSocketServer } from 'ws';

const app = express();
app.get('/api/health', (req, res) => res.send('OK'));

// 1. app.listen() returns native node:http Server instance
const server = app.listen(3000, () => {
  console.log('HTTP server listening on port 3000');
});

// 2. Attach WebSocket server to the SAME HTTP server instance!
const wss = new WebSocketServer({ server });
wss.on('connection', (ws) => console.log('WebSocket client connected'));
💡Attaching WebSocket server to the http.Server instance returned by app.listen().
🎯 Interview Key Takeaway

app.listen() returns the native http.Server instance required for WebSocket integration and graceful shutdown.

#app.listen#http.Server#WebSockets#Beginner
Back to all Express JS Questions→

More Express JS Interview Questions

Beginner LevelExpress JS

What is Express.js and how does the middleware pipeline work?

Beginner LevelExpress JS

What is the difference between req.params, req.query, and req.body?

Beginner LevelExpress JS

How does express.Router() work for building modular route controllers?