VOOZH about

URL: https://www.coursera.org/learn/packt-authentic-node-websocket-server-workshop-3bxj4

⇱ Authentic Node.js WebSocket Server Workshop | Coursera


Authentic Node.js WebSocket Server Workshop

Ends soon! Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.

Authentic Node.js WebSocket Server Workshop

Included with

β€’

Learn more

Ask Coursera

Gain insight into a topic and learn the fundamentals.
Intermediate level

Recommended experience

1 week to complete
at 10 hours a week
Flexible schedule
Learn at your own pace

Gain insight into a topic and learn the fundamentals.
Intermediate level

Recommended experience

1 week to complete
at 10 hours a week
Flexible schedule
Learn at your own pace

What you'll learn

  • Manually implement the WebSocket handshake protocol, including SHA1 and base64 encoding

  • Parse and process raw WebSocket data frames using buffers and bitwise operations

  • Construct and send WebSocket messages from server to client with protocol-compliant headers

  • Handle connection closure, masking issues, and ping/pong logic as per RFC 6455

Details to know

Shareable certificate

Add to your LinkedIn profile

Assessments

7 assignments

Taught in English

There are 6 modules in this course

Updated in May 2025.

This course now features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. Unlock the full power of real-time web communication by building a standards-compliant WebSocket server from the ground up. This hands-on course offers an immersive deep dive into the WebSocket protocol using Node.js, helping you truly understand what happens behind the scenes during client-server messaging. By the end of the course, you'll be equipped to implement bidirectional data flow in your own apps with precision and confidence. You'll start by setting up a Node.js HTTP server and enhancing it with custom modules, error handling, and RFC 6455 compliance. Once the foundation is in place, you'll progress to implementing the WebSocket handshake process, parsing headers, and verifying client requests using cryptographic hashing techniques. Debugging and testing are integrated throughout the course to reinforce best practices. In the core modules, you'll master how to receive and decode binary WebSocket frames, handle small to large payloads, and use buffers, bitwise operators, and masking logic for reliable data processing. Then, you'll dive into server-to-client communication, frame construction, and echo responses. The final section focuses on gracefully handling connection closures and error frames, ensuring your implementation is robust and production-ready. This course is ideal for backend developers, full-stack engineers, or anyone looking to gain an authentic understanding of the WebSocket protocol beyond abstractions. A working knowledge of JavaScript and Node.js is required. This is an intermediate-level course designed for those ready to move past high-level libraries and explore the core mechanics of real-time networking.

In this module, we will explore the foundations of WebSocket communication, including how the protocol upgrades from HTTP to enable persistent, two-way connections. We’ll also cover the critical role RFC 6455 plays in ensuring compatibility and protocol integrity. This section sets the groundwork for building an authentic WebSocket server.

What's included

2 videos1 reading

2 videosβ€’Total 10 minutes
  • Introductionβ€’6 minutes
  • To build a WebSocket server, we need to be RFC compliantβ€’4 minutes
1 readingβ€’Total 10 minutes
  • Full Course Resourcesβ€’10 minutes

In this module, we will build a functional Node.js HTTP server from the ground up. We'll set up the client-side interface, structure our server-side code using custom modules, and implement error handling with debugging support. These steps prepare us for seamlessly introducing WebSocket capabilities.

What's included

6 videos1 assignment

6 videosβ€’Total 34 minutes
  • Overview of HTML and CSSβ€’8 minutes
  • Setting up our HTTP serverβ€’8 minutes
  • Creating custom modules and finishing off the HTTP serverβ€’4 minutes
  • Implementing basic error handlingβ€’6 minutes
  • Using "Run and Debug" to examine the forEach loopβ€’4 minutes
  • Testing our error handling codeβ€’5 minutes
1 assignmentβ€’Total 15 minutes
  • Creating a NodeJS Server - Assessmentβ€’15 minutes

In this module, we will focus on initiating a WebSocket connection by listening to the HTTP upgrade event. We’ll break down client headers, use Node’s crypto module to generate a valid Sec-WebSocket-Accept key, and validate the handshake process. Testing ensures our server can establish real-time communication with any compliant client.

What's included

9 videos1 assignment

9 videosβ€’Total 75 minutes
  • Using the 'upgrade' event listener to receive three important objectsβ€’8 minutes
  • Examining the request object in the terminalβ€’6 minutes
  • Reading the client's opening handshake request headersβ€’18 minutes
  • Sending a "400 Bad Request" response if the client handshake headers failβ€’12 minutes
  • Generate the server response headers objectβ€’6 minutes
  • Extracting the Sec-WebSocket-Key and using the crypto moduleβ€’7 minutes
  • Timeout! What is SHA-hashing and the crypto module?β€’4 minutes
  • Generate the Sec-WebSocket-Accept value and send back headers to the clientβ€’6 minutes
  • Testing our code and opening up a valid WebSocket connectionβ€’8 minutes
1 assignmentβ€’Total 15 minutes
  • Establishing a WebSocket Connection - Assessmentβ€’15 minutes

In this module, we will dive deep into the anatomy of WebSocket frames. From extracting and unmasking payloads to parsing frame headers with bitwise operations, we’ll cover how the server receives and processes both small and large messages. Debugging tools will assist in refining the logic for real-time, binary-safe communication.

What's included

34 videos1 assignment

34 videosβ€’Total 266 minutes
  • Setting up our file for the next goalβ€’2 minutes
  • The socket object inherits from the stream.Duplex classβ€’6 minutes
  • Defining our data event handlerβ€’5 minutes
  • Quick cut - adding the 'end' event listener to our socket objectβ€’2 minutes
  • Define the processBuffer() functionβ€’10 minutes
  • The WebSocket binary frame structureβ€’6 minutes
  • Coding the task management looping functionβ€’9 minutes
  • Extract the first 2 bytes of data from the WebSocket data frameβ€’9 minutes
  • What are Buffers?β€’10 minutes
  • Why is the letter "a" sent as 7 bytes?β€’5 minutes
  • Using the Debugger tool to analyze codeβ€’13 minutes
  • Extracting the FIN bitβ€’7 minutes
  • Bitwise operatorsβ€’8 minutes
  • Extracting the MASK, OPCODE and initial LENGTH informationβ€’4 minutes
  • Setting up code to extract the payload length detailsβ€’4 minutes
  • The 3 categories of payload lengthsβ€’5 minutes
  • Calculating the payload lengthβ€’15 minutes
  • Payload length checksβ€’6 minutes
  • Extract the Masking Keyβ€’7 minutes
  • Define the getPayload() methodβ€’14 minutes
  • Extract one full frame of data (masked)β€’14 minutes
  • Unmasking the frame payloadβ€’7 minutes
  • What is the modulus operand?β€’4 minutes
  • Create a persistent fragments array and check for more frames (FIN bit check)β€’8 minutes
  • SMALL payloads - Using the debugger to analyze logicβ€’15 minutes
  • Fixing the error in our consumePayload() methodβ€’5 minutes
  • Adding a prepopulate button to the HTMLβ€’8 minutes
  • MEDIUM Payloads - Using the debugger to analyze logicβ€’10 minutes
  • LARGE Payloads: Part 1 of 3. Understanding getLength() logicβ€’7 minutes
  • LARGE Payloads: Part 2 of 3. Waiting for additional chunksβ€’6 minutes
  • LARGE Payloads: Part 3 of 3. Processing the entire payload into _fragmentsβ€’14 minutes
  • Improvements, comments, and adding opcode checksβ€’10 minutes
  • Advanced - chunk size variation between debugger vs live environmentβ€’11 minutes
  • Improving our _getInfo() methodβ€’4 minutes
1 assignmentβ€’Total 15 minutes
  • Receiving WebSocket Data - Assessmentβ€’15 minutes

In this module, we will construct and send WebSocket frames from server to client. We’ll handle everything from setting FIN and OPCODE bits to encoding payloads and managing variable-length headers. By the end, our server will be capable of echoing messages and handling client responses with precision.

What's included

11 videos1 assignment

11 videosβ€’Total 66 minutes
  • Getting project files ready to send data to the clientβ€’4 minutes
  • Calculating the size of the variable-length header fieldβ€’10 minutes
  • Create the binary frame buffer blueprintβ€’3 minutes
  • Creating the first byte of the frameβ€’5 minutes
  • Bitwise shift operatorsβ€’3 minutes
  • Populate the frame header with dataβ€’11 minutes
  • Sending the frame to the clientβ€’4 minutes
  • Testing whether the client received the frameβ€’6 minutes
  • Creating a reset() functionβ€’4 minutes
  • Using debugger tool to examine codeβ€’7 minutes
  • Displaying the WebSocket message on the client-sideβ€’10 minutes
1 assignmentβ€’Total 15 minutes
  • Sending WebSocket Data - Assessmentβ€’15 minutes

In this module, we will master the process of closing a WebSocket connection. From detecting ping/pong and malformed frames to analyzing closure behavior via the CloseEvent object, we’ll build a fully RFC-compliant server closure workflow. We'll also address edge cases like unmasked data and large payload termination.

What's included

16 videos3 assignments

16 videosβ€’Total 71 minutes
  • Setting up project code and defining our mini-goalβ€’5 minutes
  • Closing handshakeβ€’3 minutes
  • Extracting the body (closure code and reason) of the close frameβ€’9 minutes
  • Close Frame Structureβ€’3 minutes
  • Construct the payload buffer for the close frameβ€’9 minutes
  • Completing and sending the final close frame back to the clientβ€’5 minutes
  • Testing our codeβ€’4 minutes
  • Using Wireshark to master the TCP closure processβ€’5 minutes
  • Checking for "ping" and "pong" data type, and payloads larger than max sizeβ€’7 minutes
  • Extracting the server response from the CloseEvent objectβ€’3 minutes
  • Sending a closure frame if the masking bit is not set correctly by the clientβ€’2 minutes
  • Check whether client has sent a closure codeβ€’2 minutes
  • Displaying default closure message (for normal closure event)β€’0 minutes
  • Fixing comments and removing server response text when a new connection is madeβ€’3 minutes
  • Server side validation for textβ€’5 minutes
  • Fixing the refresh issue killing the serverβ€’5 minutes
3 assignmentsβ€’Total 90 minutes
  • Full Course Practice Assessmentβ€’15 minutes
  • Responding to a Closure Frame - Assessmentβ€’15 minutes
  • Full Course Assessmentβ€’60 minutes

Instructor

Packt
1,946 Coursesβ€’575,115 learners

Why people choose Coursera for their career

πŸ‘ Image

Felipe M.

Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
πŸ‘ Image

Jennifer J.

Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
πŸ‘ Image

Larry W.

Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
πŸ‘ Image

Chaitanya A.

"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

Frequently asked questions

Yes, you can preview the first video and view the syllabus before you enroll. You must purchase the course to access content not included in the preview.

If you decide to enroll in the course before the session start date, you will have access to all of the lecture videos and readings for the course. You’ll be able to submit assignments once the session starts.

Once you enroll and your session begins, you will have access to all videos and other resources, including reading items and the course discussion forum. You’ll be able to view and submit practice assessments, and complete required graded assignments to earn a grade and a Course Certificate.

If you complete the course successfully, your electronic Course Certificate will be added to your Accomplishments page - from there, you can print your Course Certificate or add it to your LinkedIn profile.

This course is currently available only to learners who have paid or received financial aid, when available.

Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.

Financial aid available,