آموزش NestJS: ساخت API شبکه اجتماعی بلادرنگ (با WebSockets) - آخرین آپدیت

دانلود NestJS: Build a Real-Time Social Media API (/w WebSockets)

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:

آموزش ساخت API شبکه‌های اجتماعی Real-Time با NestJS و WebSockets

یاد بگیرید چگونه با استفاده از NestJS و WebSockets یک API شبکه‌های اجتماعی Real-Time با قابلیت‌های چت، نوتیفیکیشن و بروزرسانی زنده کاربران بسازید.

آنچه در این دوره خواهید آموخت:

  • درک مبانی WebSockets، از TCP و HTTP handshakes تا اتصالات پایدار
  • ساخت یک برنامه چت Real-Time با استفاده از APIهای WebSocket خام برای کسب دانش بنیادین
  • استفاده از Socket IO برای پیاده‌سازی رویدادهای سفارشی، اتاق‌ها و namespaceها برای ارتباطات مقیاس‌پذیر
  • به کارگیری مبانی NestJS (ماژول‌ها، سرویس‌ها، کنترلرها، گیت‌وی‌ها، گاردها) در یک API واقعی
  • یکپارچه‌سازی JWT authentication با WebSockets برای ارتباطات Real-Time ایمن
  • ساخت ویژگی‌های Real-Time مانند پیام‌رسانی، مکالمه، پست، کامنت
  • طراحی یک backend مقیاس‌پذیر Real-Time شبکه‌های اجتماعی از ابتدا
  • ساختاردهی گیت‌وی‌ها و سرویس‌های WebSocket به صورت تمیز در یک codebase NestJS
  • تفکر از منظر frontend برای شکل‌دهی و ارائه موثر داده‌های Real-Time

پیش‌نیازها:

  • دانش پایه JavaScript و TypeScript
  • آشنایی با مبانی Node.js (توابع، ماژول‌ها، async/await)
  • تجربه کار با APIهای HTTP (مانند ساخت یا استفاده از REST APIs)
  • نیازی به تجربه قبلی با WebSockets یا NestJS نیست - همه چیز گام به گام توضیح داده خواهد شد!
  • دانش پایه MongoDB مفید است

شاید این عبارت را شنیده باشید: "برای ساخت یک برنامه چت، به WebSockets نیاز دارید." اما آیا تا به حال از خود پرسیده‌اید چرا؟

در این دوره عملی، شما یاد خواهید گرفت که چگونه یک API شبکه‌های اجتماعی Real-Time را با استفاده از NestJS و WebSockets (Socket IO) بسازید - نه فقط با حفظ کردن نحو، بلکه با درک مبانی پشت ارتباطات Real-Time. ما بررسی خواهیم کرد که سوکت‌ها چگونه کار می‌کنند، چگونه داده‌ها بین کلاینت و سرور جریان می‌یابند، و چگونه یک سیستم را به گونه‌ای طراحی کنیم که بتواند مقیاس‌پذیر باشد و فورا پاسخ دهد.

به جای کدنویسی spoon-feeding، این دوره به شما یاد می‌دهد که چگونه مستندات را بخوانید، انتقادی فکر کنید و این مهارت‌ها را در پروژه‌های خود به کار ببرید. شما اعتماد به نفس لازم برای ساخت و گسترش مستقل ویژگی‌های Real-Time را به دست خواهید آورد.

ما با یک غوطه عمیق در مبانی WebSockets شروع می‌کنیم، از نحوه کارکرد TCP handshake تا فرآیند ارتقاء HTTP که یک اتصال WebSocket پایدار را باز می‌کند. شما قبل از نوشتن یک خط کد، به وضوح می‌فهمید که در پشت صحنه چه اتفاقی می‌افتد.

در مرحله بعد، یک برنامه چت ساده با استفاده از APIهای WebSocket خام می‌سازید، که یک پایه محکم قبل از معرفی هر کتابخانه‌ای به شما می‌دهد. هنگامی که اصول اولیه را درک کردید، به Socket IO منتقل می‌شویم، جایی که مفاهیم اصلی آن از جمله رویدادهای سفارشی، اتاق‌ها و namespaces - و اینکه چگونه آنها ارتباطات Real-Time را ساده می‌کنند - را بررسی خواهید کرد.

هنگامی که دانش WebSocket شما محکم شد، دنده را عوض کرده و به مبانی NestJS می‌پردازیم. شما در مورد ماژول‌ها، کنترلرها، سرویس‌ها و گاردها یاد خواهید گرفت - و سپس از آنها برای ساخت یک backend کامل شبکه‌های اجتماعی Real-Time استفاده خواهید کرد.

چرا این دوره؟

این فقط یک دوره فشرده دیگر نیست. این یک راهنمای عملی و پروژه محور است که به شما کمک می‌کند مانند یک مهندس backend فکر کنید. اگر با JavaScript/TypeScript راحت هستید، تجربه Node.js یا NestJS دارید و می‌خواهید مهارت‌های backend خود را با معماری Real-Time ارتقا دهید، این دوره برای شما مناسب است.

در پایان، شما با یک backend کامل Real-Time از دوره خارج خواهید شد - آماده برای توانمندسازی برنامه چت، فید زنده یا پلتفرم اجتماعی خود.


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

مقدمه Introduction

  • مقدمه Introduction

مبانی WebSockets WebSockets Fundamental

  • پروتکل HTTP در مقابل WebSocket HTTP vs Websocket Protocol

  • ساخت اپلیکیشن چت با پروتکل http Build a chat app with http protocol

  • TCP Handshake (دست‌دهی TCP) TCP Handshake

  • HTTP Handshake (دست‌دهی HTTP) HTTP Handshake

  • کاربردهای WebSocket Websocket Usecase

WebSockets در عمل WebSockets in Practice

  • باز کردن اتصال ws Open a ws connection

  • ارسال و دریافت داده Send & receive data

  • سوکت دقیقا چیست؟ What's exactly a socket?

  • بازسازی اپلیکیشن چت با پروتکل websocket Refactor chat app with websocket protocol

کتابخانه Socket.io Socket.io Library

  • چرا به کتابخانه socket io نیاز داریم؟ Why we need socket io library?

  • راه اندازی socket io Setup socket io

  • ارسال و دریافت داده Send & receive data

  • توضیحات بیشتر درباره ارسال و دریافت داده More on send & receive data

  • اپلیکیشن چت: ارسال پیام Chat App: Send message

  • اپلیکیشن چت: Broadcasting (پخش همگانی) Chat App: Broadcasting

  • اپلیکیشن چت: Room (اتاق) - قسمت 1 Chat App: Room - part 1

  • اپلیکیشن چت: Room (اتاق) - قسمت 2 Chat App: Room - part 2

  • Namespace (فضای نام) Namespace

  • اپلیکیشن چت: لیست کاربران آنلاین Chat App: List users online

مبانی NestJS: مفهوم اصلی NestJS Fundamental: Core Concept

  • بررسی ساختار پوشه NestJS Explore NestJS folder structure

  • Controller (کنترلر) در NestJS Controller in NestJS

  • اصل Single Responsibility (تک مسئولیتی) Single responsibility principle

  • معرفی Provider (ارائه‌دهنده) Introduction to Provider

  • اصل Inversion of Control (وارونگی کنترل) Inversion of Control principle

  • اعمال اصل IoC در NestJS Apply IoC principle in NestJS

  • Dependency Injection (تزریق وابستگی) Dependency Injection

  • IoC Container (ظرف IoC) چگونه کار می کند؟ How IoC Container work?

  • نگاهی به Module (ماژول) Look at Module

  • کار با Module (ماژول) Work with Module

  • Middleware (میان‌افزار) Middleware

  • Middleware (میان‌افزار) - قسمت 2 Middleware - part 2

  • Exception (استثنا) Exception

  • Pipes (پایپ‌ها) Pipes

  • Guard (نگهبان) Guard

  • Interceptor (رهگیر) Interceptor

  • Custom decorators (دکوراتورهای سفارشی) Custom decorators

  • جمع بندی: مفهوم اصلی Wrap up: Core concept

مبانی NestJS: Data Transfer Object (DTO) NestJS Fundamental: Data Transfer Object (DTO)

  • بررسی اجمالی بخش Section overview

  • Nest CLI Nest CLI

  • راه اندازی mongodb Setup mongodb

  • اتصال به mongodb atlas Connect mongodb atlas

  • ایجاد طرحواره (schema) پست Create post shema

  • تزریق repository Inject repository

  • Insert (درج) document Insert document

  • DTO چیست؟ What is a DTO?

  • توضیحات بیشتر درباره DTO More about DTO

  • Validation (اعتبارسنجی) Validation

  • یادآوری درباره DTO Reminder about DTO

  • Query (جستجو) data Query data

  • برخی گزینه ها برای کاهش (مخفی کردن) data Some options to reduce (hide) data

  • استفاده از interceptor برای پاسخ DTO Use interceptor to response DTO

  • Transform (تبدیل) DTO Transform DTO

  • Query (جستجو) یک data Query a data

  • Update (به روز رسانی) تمام fields (فیلدها) (PUT) Update all fields (PUT)

  • Update (به روز رسانی) برخی field (فیلدها) (PATCH) Update some field (PATCH)

  • Delete (حذف) document Delete document

  • تزریق یک module (ماژول) دیگر Inject another module

  • راه اندازی swagger UI - قسمت 1 Setup swagger UI - part 1

  • Swagger UI - قسمت 2 Swagger UI - part 2

  • Health check (بررسی سلامت) nestjs app Health check nestjs app

  • Documentation (مستندات) برای NestJS Application Documentation for NestJS Application

  • NestJS Lifecycle (چرخه حیات NestJS) NestJS Lifecycle

  • Versioning (نسخه بندی) Versioning

  • Circular dependency (وابستگی دایره ای) Circular dependency

  • جمع بندی Wrap up

راه اندازی پروژه Setup Project

  • راه اندازی پروژه NestJS Setup NestJS Project

  • رفع مشکل eslint Fix eslint issue

  • راه اندازی پایگاه داده mongodb Setup mongodb database

  • ایجاد یک schema (طرحواره) Create a schema

  • Environment variables (متغیرهای محیطی) Environment variables

  • Versionning (نسخه بندی) Versionning

ماژول: Authentication & Authorization (احراز هویت و مجوز) Module: Authentication & Authorization

  • Sign Up (ثبت نام) Sign Up

  • Hash (هش کردن) password (رمز عبور) Hash password

  • Transform (تبدیل) DTO Transform DTO

  • Generate (تولید) JWT Generate JWT

  • Sign In (ورود) Sign In

  • Authentication Guard (نگهبان احراز هویت) Authentication Guard

  • Get (دریافت) current user (کاربر فعلی) Get current user

  • Validation (اعتبارسنجی) Validation

  • Authorization (مجوز): role (نقش) Authorization: role

  • Reflector - اختصاص value (مقدار) به method (متد) Reflector - assign value to method

  • Role Guard (نگهبان نقش) Role Guard

  • مشکل با role guard The problem with role guard

  • Resource Module (ماژول منبع) Resource Module

ماژول: Post & Upload Media File (پست و آپلود فایل رسانه ای) Module: Post & Upload Media File

  • Post schema (طرحواره پست) Post schema

  • Create (ایجاد) a post (پست) Create a post

  • Response (پاسخ) post dto Response post dto

  • Get (دریافت) all posts (همه پست‌ها) & custom response dto Get all posts & custom response dto

  • Fix (رفع) _id change (تغییر) after refresh (بعد از رفرش) Fix _id change after refresh

  • Get (دریافت) a post (پست) Get a post

  • Update (به روز رسانی) post (پست) Update post

  • Remove (حذف) post (پست) & custom validate (اعتبارسنجی سفارشی) mongodb _id Remove post & custom validate mongodb _id

  • Setup (راه اندازی) cloudinary to upload file (برای آپلود فایل) Setup cloudinary to upload file

  • Upload (آپلود) multiple files (چندین فایل) Upload multiple files

  • Add (اضافه کردن) media file (فایل رسانه ای) to post (به پست) Add media file to post

  • Delete (حذف) media file (فایل رسانه ای) Delete media file

  • Custom (سفارشی) DTO to response (برای پاسخ) url Custom DTO to response url

  • Important (مهم) pagination (صفحه بندی) bug (باگ) Important pagination bug

  • Cursor pagination (صفحه بندی کرسر) Cursor pagination

ماژول: Reaction (واکنش) Module: Reaction

  • Think (فکر کردن) about reaction (درباره واکنش) Think about reaction

  • Reaction schema (طرحواره واکنش) Reaction schema

  • Add (اضافه کردن) reaction (واکنش) to post (به پست) Add reaction to post

  • Update (به روز رسانی) reaction count (تعداد واکنش) Update reaction count

  • Response (پاسخ) reaction count dto Response reaction count dto

  • Remove (حذف) reaction (واکنش) Remove reaction

  • Attach (پیوست کردن) my reaction (واکنش من) to post (به پست) Attach my reaction to post

  • Refactor (بازسازی) to atomic operation (به عملیات اتمی) Refactor to atomic operation

  • What's next? (بعدش چی؟) What's next?

ماژول: Comment (نظر) Module: Comment

  • Comment schema (طرحواره نظر) Comment schema

  • Create (ایجاد) comment (نظر) Create comment

  • User comment property (ویژگی نظر کاربر) User comment property

  • Get (دریافت) comments (نظرات) Get comments

  • Update (به روز رسانی) comment (نظر) Update comment

  • Delete (حذف) comment (نظر) Delete comment

  • Delete (حذف) child comment (نظر فرزند) Delete child comment

  • Custom response DTO (DTO پاسخ سفارشی) Custom response DTO

  • Summarize (خلاصه) Summarize

  • Authorization (مجوز) Authorization

  • Fix (رفع) comment response DTO Fix comment response DTO

ماژول: User (کاربر) Module: User

  • User schema property (ویژگی طرحواره کاربر) User schema property

  • Get (دریافت) current user profile (پروفایل کاربر فعلی) Get current user profile

  • Get (دریافت) all users (همه کاربران) Get all users

  • Upload (آپلود) avatar (آواتار) Upload avatar

  • Upload (آپلود) cover photo (عکس کاور) Upload cover photo

ماژول: Friends (دوستان) Module: Friends

  • Friend schema (طرحواره دوست) Friend schema

  • Send (ارسال) friend request (درخواست دوستی) Send friend request

  • Cancel (لغو) friend request (درخواست دوستی) Cancel friend request

  • Accept (پذیرش) friend request (درخواست دوستی) Accept friend request

  • Reject (رد) friend request (درخواست دوستی) Reject friend request

  • Get (دریافت) my request pending (درخواست های در انتظار من) Get my request pending

  • Get (دریافت) my friends (دوستان من) Get my friends

  • Custom response DTO (DTO پاسخ سفارشی) Custom response DTO

  • Search (جستجو) users (کاربران) Search users

  • Pagination (صفحه بندی) users (کاربران) Pagination users

ماژول: Conversation (مکالمه) Module: Conversation

  • Understand (درک) conversation & message (مکالمه و پیام) Understand conversation & message

  • Conversation & Message schema (طرحواره مکالمه و پیام) Conversation & Message schema

  • Create (ایجاد) private conversation (مکالمه خصوصی) Create private conversation

  • Create (ایجاد) group conversation (مکالمه گروهی) Create group conversation

  • Get (دریافت) all conversations (همه مکالمات) Get all conversations

  • Pagination (صفحه بندی) - part 1 (قسمت 1) Pagination - part 1

  • Pagination (صفحه بندی) - part 2 (قسمت 2) Pagination - part 2

  • Get (دریافت) conversation (مکالمه) Get conversation

  • Update (به روز رسانی) conversation (مکالمه) Update conversation

  • Add (اضافه کردن) participant (شرکت کننده) to group chat (به چت گروهی) Add participant to group chat

  • Remove (حذف) participant (شرکت کننده) from group chat (از چت گروهی) Remove participant from group chat

  • Remove (حذف) conversation (مکالمه) Remove conversation

ماژول: Message (پیام) Module: Message

  • Send (ارسال) message (پیام) Send message

  • Get (دریافت) all messages in conversation (همه پیام ها در مکالمه) Get all messages in conversation

  • Pagination (صفحه بندی) Pagination

  • Update (به روز رسانی) message (پیام) Update message

  • Delete (حذف) message (پیام) Delete message

  • Mark as seen (علامت گذاری به عنوان دیده شده) message (پیام) Mark as seen message

ماژول: WebSocket Gateway - Handle Real-Time (درگاه WebSocket - مدیریت زمان واقعی) Module: WebSocket Gateway - Handle Real-Time

  • Understand (درک) websocket gateway (درگاه websocket) Understand websocket gateway

  • Think (فکر کردن) how to send (چگونه ارسال کنیم) socket data (داده های سوکت) for message (برای پیام) Think how to send socket data for message

  • Handle (مدیریت) update message (به روز رسانی پیام) Handle update message

  • Handle (مدیریت) delete message (حذف پیام) Handle delete message

  • Mark as seen (علامت گذاری به عنوان دیده شده) message (پیام) Mark as seen message

  • Post Gateway (درگاه پست) Post Gateway

  • Handle (مدیریت) post created (ایجاد شدن پست) Handle post created

  • Handle (مدیریت) upload post media (آپلود رسانه پست) Handle upload post media

  • Handle (مدیریت) post update (به روز رسانی پست) Handle post update

  • Handle (مدیریت) post delete (حذف پست) Handle post delete

  • Handle (مدیریت) add reaction (اضافه کردن واکنش) Handle add reaction

  • Handle (مدیریت) remove reaction (حذف واکنش) Handle remove reaction

  • What's next? (بعدش چی؟) What's next?

  • Comment Gateway (درگاه نظر) - create (ایجاد) Comment Gateway - create

  • Handle (مدیریت) update comment (به روز رسانی نظر) Handle update comment

  • Handle (مدیریت) delete comment (حذف نظر) Handle delete comment

  • Friend Gateway (درگاه دوست) Friend Gateway

  • Handle (مدیریت) send friend request (ارسال درخواست دوستی) Handle send friend request

  • Handle (مدیریت) accept friend request (پذیرش درخواست دوستی) Handle accept friend request

  • Handle (مدیریت) reject friend request (رد درخواست دوستی) Handle reject friend request

  • Handle (مدیریت) cancel friend request (لغو درخواست دوستی) Handle cancel friend request

ماژول: Notification (اعلان) Module: Notification

  • Notification schema (طرحواره اعلان) Notification schema

  • Create (ایجاد) notification (اعلان) Create notification

  • Get (دریافت) all notifications (همه اعلان ها) Get all notifications

  • Pagination (صفحه بندی) Pagination

  • Mark as read (علامت گذاری به عنوان خوانده شده) Mark as read

  • Notification gateway (درگاه اعلان) - real time (زمان واقعی) for send notification (برای ارسال اعلان) Notification gateway - real time for send notification

Post Privacy (حریم خصوصی پست) Post Privacy

  • Let's handle privacy (بیایید حریم خصوصی را مدیریت کنیم) Let's handle privacy

Bug Fix (رفع باگ) Bug Fix

  • Fix (رفع) response authentication (پاسخ احراز هویت) Fix response authentication

  • Attach (پیوست کردن) isFriend flag (پرچم isFriend) to get all users (برای دریافت همه کاربران) Attach isFriend flag to get all users

  • Fix (رفع) post gateway (درگاه پست) Fix post gateway

  • Fix (رفع) reaction gateway (درگاه واکنش) Fix reaction gateway

  • Post ID Post ID

  • Fix (رفع) comment gateway (درگاه نظر) Fix comment gateway

  • Fix (رفع) reaction type (نوع واکنش) Fix reaction type

  • Fix bug (رفع باگ): check point 1 (نقطه بررسی 1) Fix bug: check point 1

  • Fix (رفع) send friend request (ارسال درخواست دوستی) Fix send friend request

  • Fix (رفع) get my friends (دریافت دوستان من) Fix get my friends

  • Fix (رفع) response conversation (پاسخ مکالمه) Fix response conversation

  • lastMessageAt property (ویژگی lastMessageAt) lastMessageAt property

  • isLastMessageSeen property (ویژگی isLastMessageSeen) isLastMessageSeen property

  • Fix (رفع) friend gateway (درگاه دوست) - part 1 (قسمت 1) Fix friend gateway - part 1

  • Fix (رفع) friend gateway (درگاه دوست) - part 2 (قسمت 2) Fix friend gateway - part 2

  • UnFriend (لغو دوستی) - part 1 (قسمت 1) UnFriend - part 1

  • UnFriend (لغو دوستی) - part 2 (قسمت 2) UnFriend - part 2

  • Pagination message (صفحه بندی پیام): bottom to top (از پایین به بالا) Pagination message: bottom to top

  • Fix (رفع) mark a seen message (علامت گذاری یک پیام به عنوان دیده شده) Fix mark a seen message

What's next (بعدش چی) What's next

  • Enabled cors (فعال کردن cors) Enabled cors

  • You have learned a lot (شما خیلی چیزها یاد گرفته اید) You have learned a lot

  • Keep learning (به یادگیری ادامه دهید) Keep learning

نمایش نظرات

آموزش NestJS: ساخت API شبکه اجتماعی بلادرنگ (با WebSockets)
جزییات دوره
28 hours
203
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
134
5 از 5
دارد
دارد
دارد
Van Nguyen
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Van Nguyen Van Nguyen

توسعه دهنده وب