Bird
Raised Fist0
Node.jsframework~5 mins

WebSocket protocol concept in Node.js - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the WebSocket protocol?
WebSocket is a communication protocol that allows a two-way, full-duplex connection between a client and a server over a single, long-lived TCP connection.
Click to reveal answer
beginner
How does WebSocket differ from HTTP?
Unlike HTTP, which is request-response and short-lived, WebSocket keeps the connection open, allowing real-time, continuous data exchange without repeated handshakes.
Click to reveal answer
intermediate
What is the initial step to establish a WebSocket connection?
The client sends an HTTP upgrade request to the server asking to switch the protocol from HTTP to WebSocket, called the handshake.
Click to reveal answer
beginner
What does 'full-duplex' mean in WebSocket communication?
Full-duplex means both client and server can send and receive messages independently at the same time without waiting for the other side.
Click to reveal answer
beginner
Why is WebSocket useful for real-time applications?
Because it keeps the connection open and allows instant two-way data flow, WebSocket is great for chat apps, live updates, games, and other apps needing fast interaction.
Click to reveal answer
What protocol does WebSocket start with before switching?
AFTP
BTCP
CSMTP
DHTTP
Which feature best describes WebSocket communication?
ARequest-response only
BFull-duplex
COne-way streaming
DStateless
What happens after the WebSocket handshake is successful?
AA persistent connection is established
BClient sends HTTP requests repeatedly
CConnection closes immediately
DServer sends a file download
Which is NOT a typical use case for WebSocket?
AStatic website hosting
BReal-time gaming
CLive chat applications
DStock price updates
What does the WebSocket protocol use to keep the connection alive?
ARepeated HTTP requests
BMultiple UDP packets
CA single TCP connection
DEmail notifications
Explain how a WebSocket connection is established and why it is different from a normal HTTP connection.
Think about the initial request and what changes after the handshake.
You got /4 concepts.
    Describe real-life scenarios where WebSocket is a better choice than HTTP and why.
    Consider apps that need instant updates without refreshing.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the WebSocket protocol in Node.js applications?
      easy
      A. To send HTTP requests from client to server
      B. To create a live, two-way communication channel between client and server
      C. To serve static files like HTML and CSS
      D. To store data permanently on the server

      Solution

      1. Step 1: Understand WebSocket communication

        WebSocket allows a persistent connection where both client and server can send messages anytime.
      2. Step 2: Compare with other options

        HTTP requests are one-way and short-lived, static files serving and data storage are unrelated to WebSocket's main role.
      3. Final Answer:

        To create a live, two-way communication channel between client and server -> Option B
      4. Quick Check:

        WebSocket = two-way live connection [OK]
      Hint: WebSocket means live two-way chat between client and server [OK]
      Common Mistakes:
      • Confusing WebSocket with HTTP request-response
      • Thinking WebSocket serves static files
      • Assuming WebSocket stores data permanently
      2. Which of the following is the correct way to create a WebSocket server using the 'ws' library in Node.js?
      easy
      A. const ws = new WebSocket(8080);
      B. const ws = WebSocket.createServer(8080);
      C. const ws = new WebSocket.Server({ port: 8080 });
      D. const ws = WebSocket.listen(8080);

      Solution

      1. Step 1: Recall 'ws' library syntax

        The 'ws' library creates a server with new WebSocket.Server and a config object with port.
      2. Step 2: Check each option

        Only const ws = new WebSocket.Server({ port: 8080 }); uses correct constructor and port option. Others use invalid methods or constructors.
      3. Final Answer:

        const ws = new WebSocket.Server({ port: 8080 }); -> Option C
      4. Quick Check:

        WebSocket.Server + port config = correct [OK]
      Hint: Use new WebSocket.Server({ port }) to create server [OK]
      Common Mistakes:
      • Using WebSocket constructor instead of WebSocket.Server
      • Calling non-existent methods like createServer or listen
      • Passing port as a direct argument instead of in an object
      3. Given this Node.js WebSocket server code snippet, what will be logged when a client sends the message 'hello'?
      const WebSocket = require('ws');
      const wss = new WebSocket.Server({ port: 8080 });
      wss.on('connection', ws => {
        ws.on('message', message => {
          console.log(`Received: ${message}`);
          ws.send('pong');
        });
      });
      medium
      A. Received: hello
      B. pong
      C. Received: pong
      D. hello

      Solution

      1. Step 1: Analyze message event handler

        When the server receives a message, it logs 'Received: ' plus the message content.
      2. Step 2: Identify logged output

        Client sends 'hello', so console logs 'Received: hello'. The server sends back 'pong' but that is not logged.
      3. Final Answer:

        Received: hello -> Option A
      4. Quick Check:

        Server logs received message text [OK]
      Hint: Server logs 'Received: message' on message event [OK]
      Common Mistakes:
      • Confusing sent message with logged message
      • Thinking server logs the reply it sends
      • Mixing up client and server console outputs
      4. Identify the error in this WebSocket server code snippet:
      const WebSocket = require('ws');
      const wss = new WebSocket.Server({ port: 8080 });
      wss.on('connection', ws => {
        ws.on('message', (msg) => {
          ws.send(msg.toUpperCase);
        });
      });
      medium
      A. The port number must be a string, not a number
      B. WebSocket.Server should be WebSocket.createServer
      C. The 'message' event handler should be 'onMessage'
      D. msg.toUpperCase should be called as a function: msg.toUpperCase()

      Solution

      1. Step 1: Check usage of toUpperCase

        toUpperCase is a function and must be called with parentheses to get the uppercase string.
      2. Step 2: Verify other parts

        WebSocket.Server is correct, 'message' event is correct, port can be a number.
      3. Final Answer:

        msg.toUpperCase should be called as a function: msg.toUpperCase() -> Option D
      4. Quick Check:

        Call string methods with () [OK]
      Hint: String methods need () to execute, not just reference [OK]
      Common Mistakes:
      • Forgetting parentheses on string methods
      • Using wrong event names like 'onMessage'
      • Confusing WebSocket server creation syntax
      5. You want to build a Node.js WebSocket server that broadcasts any message received from one client to all connected clients except the sender. Which code snippet correctly implements this behavior?
      hard
      A. wss.on('connection', ws => { ws.on('message', message => { wss.clients.forEach(client => { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(message); } }); }); });
      B. wss.on('connection', ws => { ws.on('message', message => { ws.send(message); }); });
      C. wss.on('connection', ws => { ws.on('message', message => { wss.send(message); }); });
      D. wss.on('message', message => { wss.clients.forEach(client => client.send(message)); });

      Solution

      1. Step 1: Understand broadcasting logic

        Broadcast means sending message to all clients except the sender, checking if client connection is open.
      2. Step 2: Analyze each option

        wss.on('connection', ws => { ws.on('message', message => { wss.clients.forEach(client => { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(message); } }); }); }); loops over all clients, skips sender, checks readyState, and sends message correctly. Others either send only to sender, call invalid methods, or listen on wrong event.
      3. Final Answer:

        Option A code snippet correctly broadcasts to all except sender -> Option A
      4. Quick Check:

        Broadcast = send to all except sender with readyState check [OK]
      Hint: Use wss.clients.forEach and skip sender to broadcast [OK]
      Common Mistakes:
      • Sending message only back to sender
      • Calling send on wss object instead of clients
      • Not checking client.readyState before sending
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard