آموزش کارگاه جامع و عملی ساخت سرور WebSocket با Node.js - آخرین آپدیت

دانلود Authentic Node.js WebSocket Server Workshop

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره: به‌روزرسانی شده در می ۲۰۲۵. این دوره اکنون دارای قابلیت Coursera Coach است! روشی هوشمندانه‌تر برای یادگیری با گفتگوهای تعاملی و بلادرنگ که به شما کمک می‌کند دانش خود را آزمایش کنید، پیش‌فرض‌ها را به چالش بکشید و در حین پیشروی در دوره، درک خود را عمیق‌تر کنید. با ساخت یک سرور WebSocket استاندارد از پایه، قدرت کامل ارتباطات وب بلادرنگ (Real-time) را آزاد کنید. این دوره عملی، غوطه‌وری عمیقی در پروتکل WebSocket با استفاده از Node.js ارائه می‌دهد و به شما کمک می‌کند تا دقیقاً متوجه شوید در پشت صحنه پیام‌رسانی کلاینت-سرور چه اتفاقاتی می‌افتد. در پایان این دوره، شما قادر خواهید بود جریان داده‌های دوطرفه را با دقت و اعتماد به نفس کامل در برنامه‌های خود پیاده‌سازی کنید. شما با راه‌اندازی یک سرور HTTP در Node.js شروع کرده و آن را با ماژول‌های سفارشی، مدیریت خطا و رعایت استاندارد RFC 6455 ارتقا می‌دهید. پس از ایجاد زیرساخت، به سراغ پیاده‌سازی فرآیند دست‌دادن (Handshake) در WebSocket، تجزیه هدرها و تأیید درخواست‌های کلاینت با استفاده از تکنیک‌های هشینگ رمزنگاری خواهید رفت. عیب‌یابی و تست در سراسر دوره ادغام شده است تا بهترین روش‌ها تقویت شوند. در ماژول‌های اصلی، تسلط بر نحوه دریافت و رمزگشایی فریم‌های باینری WebSocket، مدیریت داده‌های کوچک تا بزرگ، و استفاده از بافرها، عملگرهای بیتی و منطق ماسک‌گذاری برای پردازش قابل اعتماد داده‌ها را خواهید آموخت. سپس به بررسی ارتباط سرور به کلاینت، ساخت فریم و پاسخ‌های اکو (Echo) می‌پردازید. بخش نهایی بر مدیریت صحیح بستن اتصالات و فریم‌های خطا تمرکز دارد تا اطمینان حاصل شود که پیاده‌سازی شما مستحکم و آماده محیط عملیاتی است. این دوره برای توسعه‌دهندگان بک‌اند، مهندسان فول‌استک یا هر کسی که به دنبال درکی واقعی از پروتکل WebSocket فراتر از کتابخانه‌های آماده است، ایده‌آل است. داشتن دانش کاربردی از JavaScript و Node.js الزامی است. این یک دوره سطح متوسط است که برای کسانی طراحی شده که آماده‌اند از کتابخانه‌های سطح بالا عبور کرده و مکانیسم‌های اصلی شبکه‌های بلادرنگ را کشف کنند.

سرفصل ها و درس ها

مقدمه Introduction

  • مقدمه Introduction

  • برای ساخت سرور WebSocket، باید با RFC سازگار باشیم To build a WebSocket server, we need to be RFC compliant

ساخت سرور Node.js Creating a NodeJS Server

  • مروری بر HTML و CSS Overview of HTML and CSS

  • راه‌اندازی سرور HTTP Setting up our HTTP server

  • ساخت ماژول‌های سفارشی و تکمیل سرور HTTP Creating custom modules and finishing off the HTTP server

  • پیاده‌سازی مدیریت خطاهای پایه Implementing basic error handling

  • استفاده از Run and Debug برای بررسی حلقه forEach Using "Run and Debug" to examine the forEach loop

  • تست کد مدیریت خطا Testing our error handling code

برقراری اتصال WebSocket Establishing a WebSocket Connection

  • استفاده از شنونده رویداد upgrade برای دریافت سه شیء مهم Using the 'upgrade' event listener to receive three important objects

  • بررسی شیء درخواست (Request) در ترمینال Examining the request object in the terminal

  • خواندن هدرهای درخواست دست‌دادن (Handshake) کلاینت Reading the client's opening handshake request headers

  • ارسال پاسخ 400 Bad Request در صورت عدم تطبیق هدرهای کلاینت Sending a "400 Bad Request" response if the client handshake headers fail

  • تولید شیء هدرهای پاسخ سرور Generate the server response headers object

  • استخراج Sec WebSocket Key و استفاده از ماژول crypto Extracting the Sec-WebSocket-Key and using the crypto module

  • زمان تمام شد! هشینگ SHA و ماژول crypto چیست؟ Timeout! What is SHA-hashing and the crypto module?

  • تولید مقدار Sec WebSocket Accept و ارسال هدرها به کلاینت Generate the Sec-WebSocket-Accept value and send back headers to the client

  • تست کد و برقراری یک اتصال WebSocket معتبر Testing our code and opening up a valid WebSocket connection

دریافت داده‌های WebSocket Receiving WebSocket Data

  • آماده‌سازی فایل برای هدف بعدی Setting up our file for the next goal

  • شیء socket از کلاس stream.Duplex ارث‌بری می‌کند The socket object inherits from the stream.Duplex class

  • تعریف مدیریت‌کننده رویداد داده (Data Event Handler) Defining our data event handler

  • برش سریع: افزودن شنونده رویداد end به شیء socket Quick cut - adding the 'end' event listener to our socket object

  • تعریف تابع processBuffer Define the processBuffer() function

  • ساختار فریم باینری WebSocket The WebSocket binary frame structure

  • کدنویسی تابع حلقه مدیریت تسک‌ها Coding the task management looping function

  • استخراج ۲ بایت اول داده‌ها از فریم WebSocket Extract the first 2 bytes of data from the WebSocket data frame

  • بافرها (Buffers) چیستند؟ What are Buffers?

  • چرا حرف a به صورت ۷ بایت ارسال می‌شود؟ Why is the letter "a" sent as 7 bytes?

  • استفاده از ابزار Debugger برای تحلیل کد Using the Debugger tool to analyze code

  • استخراج بیت FIN Extracting the FIN bit

  • عملگرهای بیتی (Bitwise operators) Bitwise operators

  • استخراج اطلاعات MASK، OPCODE و طول اولیه (LENGTH) Extracting the MASK, OPCODE and initial LENGTH information

  • راه‌اندازی کد برای استخراج جزئیات طول Payload Setting up code to extract the payload length details

  • سه دسته از طول‌های Payload The 3 categories of payload lengths

  • محاسبه طول Payload Calculating the payload length

  • بررسی‌های طول Payload Payload length checks

  • استخراج کلید ماسک‌گذاری (Masking Key) Extract the Masking Key

  • تعریف متد getPayload Define the getPayload() method

  • استخراج یک فریم کامل از داده‌ها (ماسک شده) Extract one full frame of data (masked)

  • برداشتن ماسک از Payload فریم (Unmasking) Unmasking the frame payload

  • عملگر باقی‌مانده (Modulus) چیست؟ What is the modulus operand?

  • ساخت آرایه قطعات پایدار و بررسی فریم‌های بیشتر (بررسی بیت FIN) Create a persistent fragments array and check for more frames (FIN bit check)

  • Payloadهای کوچک: استفاده از دیباگر برای تحلیل منطق SMALL payloads - Using the debugger to analyze logic

  • رفع خطا در متد consumePayload Fixing the error in our consumePayload() method

  • افزودن دکمه prepopulate به HTML Adding a prepopulate button to the HTML

  • Payloadهای متوسط: استفاده از دیباگر برای تحلیل منطق MEDIUM Payloads - Using the debugger to analyze logic

  • Payloadهای بزرگ: بخش ۱ از ۳. درک منطق getLength LARGE Payloads: Part 1 of 3. Understanding getLength() logic

  • Payloadهای بزرگ: بخش ۲ از ۳. انتظار برای تکه‌های اضافی LARGE Payloads: Part 2 of 3. Waiting for additional chunks

  • Payloadهای بزرگ: بخش ۳ از ۳. پردازش کل Payload در _fragments LARGE Payloads: Part 3 of 3. Processing the entire payload into _fragments

  • بهبودها، کامنت‌ها و افزودن بررسی‌های Opcode Improvements, comments, and adding opcode checks

  • پیشرفته: تفاوت اندازه تکه‌ها (Chunk size) در دیباگر در مقابل محیط زنده Advanced - chunk size variation between debugger vs live environment

  • بهبود متد _getInfo Improving our _getInfo() method

ارسال داده‌های WebSocket Sending WebSocket Data

  • آماده‌سازی فایل‌های پروژه برای ارسال داده به کلاینت Getting project files ready to send data to the client

  • محاسبه اندازه فیلد هدر با طول متغیر Calculating the size of the variable-length header field

  • ساخت نقشه بافر فریم باینری Create the binary frame buffer blueprint

  • ساخت اولین بایت فریم Creating the first byte of the frame

  • عملگرهای شیفت بیتی (Bitwise shift) Bitwise shift operators

  • پر کردن هدر فریم با داده‌ها Populate the frame header with data

  • ارسال فریم به کلاینت Sending the frame to the client

  • تست دریافت فریم توسط کلاینت Testing whether the client received the frame

  • ساخت تابع reset Creating a reset() function

  • استفاده از ابزار دیباگر برای بررسی کد Using debugger tool to examine code

  • نمایش پیام WebSocket در سمت کلاینت Displaying the WebSocket message on the client-side

پاسخ به فریم بستن اتصال Responding to a Closure Frame

  • راه‌اندازی کد پروژه و تعریف هدف کوچک Setting up project code and defining our mini-goal

  • دست‌دادن برای بستن اتصال (Closing handshake) Closing handshake

  • استخراج بدنه (کد بستن و دلیل) از فریم Close Extracting the body (closure code and reason) of the close frame

  • ساختار فریم Close Close Frame Structure

  • ساخت بافر Payload برای فریم بستن Construct the payload buffer for the close frame

  • تکمیل و ارسال فریم نهایی بستن به کلاینت Completing and sending the final close frame back to the client

  • تست کد Testing our code

  • استفاده از Wireshark برای تسلط بر فرآیند بستن TCP Using Wireshark to master the TCP closure process

  • بررسی انواع داده ping و pong و Payloadهای بزرگتر از حداکثر اندازه Checking for "ping" and "pong" data type, and payloads larger than max size

  • استخراج پاسخ سرور از شیء CloseEvent Extracting the server response from the CloseEvent object

  • ارسال فریم بستن در صورتی که بیت ماسک توسط کلاینت درست تنظیم نشده باشد Sending a closure frame if the masking bit is not set correctly by the client

  • بررسی اینکه آیا کلاینت کد بستن ارسال کرده است یا خیر Check whether client has sent a closure code

  • نمایش پیام بستن پیش‌فرض (برای رویداد بستن عادی) Displaying default closure message (for normal closure event)

  • اصلاح کامنت‌ها و حذف متن پاسخ سرور هنگام ایجاد اتصال جدید Fixing comments and removing server response text when a new connection is made

  • اعتبارسنجی متن در سمت سرور Server side validation for text

  • رفع مشکل رفرش صفحه که باعث بسته شدن سرور می‌شد Fixing the refresh issue killing the server

نمایش نظرات

آموزش کارگاه جامع و عملی ساخت سرور WebSocket با Node.js
جزییات دوره
11h 24m
78
(آخرین آپدیت)
69
- از 5
دارد
دارد
دارد
Chris Croft
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Chris Croft Chris Croft

مربی مدیریت، سخنران، نویسنده