Rust VoIP - Janus Media Server #10: Call App to App - Tổng kết
Bài 1010:29|2 tuần trước|Rust VoIP: Janus Media Server

Rust VoIP - Janus Media Server #10: Call App to App - Tổng kết

Đây là bài học khép lại chương về luồng gọi App-to-App. Sau khi đã hiện thực hóa thành công toàn bộ hệ thống, hôm nay chúng ta sẽ cùng nhìn lại bức tranh tổng quan để hiểu rõ bản chất của việc kết nối qua Media Server khác biệt như thế nào so với mô hình WebRTC P2P truyền thống. Video này sẽ giúp bạn hệ thống hóa lại toàn bộ quy trình signaling, phân tích luồng media thực tế thông qua Sequence Diagram và chuẩn bị nền tảng cho các chương nâng cao như SIP Integration.

1. Demo thực tế & Phân tích ICE Candidate:

  • Thực hiện cuộc gọi thực tế giữa Chrome và Firefox

  • Kiểm tra chất lượng media/audio

  • Phân tích ICE Candidate:

  • Trong P2P:

Browser ↔ Browser

  • Trong Media Server:

Browser ↔ Janus Server

  • Tìm hiểu vì sao ICE Candidate giờ đây trỏ tới Public IP của Janus VPS thay vì IP của trình duyệt

2. Giải mã Sequence Diagram App-to-App:

Luồng Signaling:

  • Web Client gửi request tới Rust Server

  • Rust điều khiển Janus:

  • Create Session

  • Attach Handle

  • Create Room

  • Trao đổi SDP Offer / Answer thông qua Rust Server

Luồng RTP / Media:

  • Media không còn đi trực tiếp giữa 2 browser

  • Browser sẽ gửi SRTP tới Janus AudioBridge

  • Janus thực hiện vai trò:

  • Media relay

  • Audio mixer

3. Ưu thế của mô hình Media Server:

  • Media đi qua server giúp:

  • Recording cuộc gọi

  • Invite thêm participant

  • Transfer cuộc gọi

  • Chủ động disconnect user

  • Hỗ trợ:

  • Conference

  • Scalability

  • Production-ready architecture

4. So sánh P2P vs Media Server:

WebRTC P2P:

  • Rust Server chỉ signaling

  • Media đi trực tiếp giữa các browser


Janus Media Server:

  • Signaling phức tạp hơn

  • Nhưng:

  • Quản lý cuộc gọi tốt hơn

  • Dễ scale

  • Hỗ trợ nhiều tính năng VoIP nâng cao

5. Lộ trình tiếp theo – SIP Integration:

  • Chuẩn bị bước sang chương:

  • SIP to App

  • App to SIP

  • RTP endpoint

  • Softphone integration

  • Kết nối:

  • Browser/WebRTC

  • SIP Phone

  • Tổng đài VoIP thực tế

6. 🚀 Kết quả đạt được:

Sau bài học này, bạn sẽ:

  • Hiểu rõ kiến trúc VoIP sử dụng Media Server

  • Phân biệt bản chất giữa:

  • WebRTC P2P

  • Media Server Architecture

  • Hiểu flow:

  • SDP

  • RTP

  • ICE Candidate

  • Signaling

  • Nắm được cách Janus xử lý media/audio trong production

  • Sẵn sàng bước sang các bài học SIP Integration nâng cao
    Đây là cột mốc cực kỳ quan trọng trước khi tiến vào thế giới VoIP thực tế với SIP, RTP và hệ thống viễn thông chuyên nghiệp.

Bài học liên quan

Xem khóa học
Rust VoIP - Janus Media Server #27: Final Recording + Play File + DTMF
26:21

Rust VoIP - Janus Media Server #27: Final Recording + Play File + DTMF

Trong bài học này, chúng ta sẽ giải quyết những bài toán thực tế mà các cuộc gọi Peer-to-Peer (P2P) thông thường không xử lý được. Chúng ta sẽ tập trung vào 3 tính năng nâng cao: Phát file âm thanh (Play File) làm nhạc chờ, Ghi âm cuộc gọi (Recording) tập trung tại server và Thu thập phím bấm (DTMF) để đặt nền móng cho hệ thống IVR (Tổng đài tự động)

Bài 27
Rust VoIP - Janus Media Server #26: App To Sip: Talking State & End State
24:51

Rust VoIP - Janus Media Server #26: App To Sip: Talking State & End State

Trong bài học này, chúng ta sẽ hoàn thiện những bước cuối cùng của luồng gọi App-to-SIP với Rust và Janus Media Server. Sau khi đã kết nối thành công từ WebRTC Browser đến SIP Phone ở bài trước, video hôm nay sẽ tập trung vào việc triển khai Talking State và End State để quản lý toàn bộ vòng đời cuộc gọi VoIP từ khi bắt đầu đàm thoại đến lúc giải phóng tài nguyên hoàn toàn. Bạn sẽ học cách xử lý SIP 200 OK, quản lý SIP Dialog, xử lý sự kiện kết thúc cuộc gọi từ nhiều nguồn khác nhau và cleanup tài nguyên trên Janus Media Server một cách chính xác trong hệ thống SIP ↔ WebRTC production.

Bài 26
Rust VoIP - Janus Media Server #25: App To Sip: Connect To SIP State
1:09:22

Rust VoIP - Janus Media Server #25: App To Sip: Connect To SIP State

Trong bài học này, chúng ta sẽ thực hiện một trong những bước quan trọng nhất của luồng App-to-SIP: Trạng thái Connect to SIP. Đây là giai đoạn hệ thống Rust Server của chúng ta đóng vai trò là một SIP Client (UAC) để khởi tạo cuộc gọi đến SIP Server (Kamailio) và chuyển tiếp yêu cầu từ người dùng WebRTC ra thế giới điện thoại. Bạn sẽ học cách build một bản tin SIP INVITE hoàn chỉnh, cách khai thác Janus Admin API để lấy thông tin media và cách cấu hình Kamailio để điều phối cuộc gọi đi (Outbound Call).

Bài 25
Rust VoIP - Janus Media Server #24: App To Sip: Build + Deploy + Debug App to SIP.
16:01

Rust VoIP - Janus Media Server #24: App To Sip: Build + Deploy + Debug App to SIP.

Trong bài học này, chúng ta sẽ tiếp tục hoàn thiện luồng App-to-SIP. Sau khi đã xử lý xong trạng thái chờ SDP từ người gọi, video hôm nay sẽ tập trung vào việc Build, Deploy và Debug thực tế để chuyển dịch sang trạng thái tiếp theo: Connect to SIP State. Bạn sẽ học cách định nghĩa cấu trúc trạng thái mới, xử lý các sự kiện bất đồng bộ từ WebSocket và Janus để đảm bảo điều kiện "webrtcup" được thỏa mãn trước khi thực hiện kết nối ra phía nhà mạng.

Bài 24
Rust VoIP - Janus Media Server #23: App To Sip: Waiting Caller SDP State
30:51

Rust VoIP - Janus Media Server #23: App To Sip: Waiting Caller SDP State

Sau khi đã xây dựng xong bộ khung cho luồng:📞 App-to-SIP, ở bài trước, hôm nay chúng ta sẽ bắt đầu hiện thực hóa state đầu tiên của outbound calling flow: → Waiting Caller SDP State. Đây là giai đoạn quan trọng để thiết lập media path từ WebRTC Browser trước khi hệ thống thực hiện cuộc gọi ra phía SIP/Telco.

Bài 23
Rust VoIP - Janus Media Server #22: App To Sip: Setup Call
24:42

Rust VoIP - Janus Media Server #22: App To Sip: Setup Call

Sau khi đã triển khai thành công các luồng gọi: App-to-App, SIP-to-App, trong bài học này, chúng ta sẽ bắt đầu xây dựng luồng ngược lại: 📞 App-to-SIP. Đây là tính năng cho phép WebRTC Browser thực hiện cuộc gọi trực tiếp tới số điện thoại SIP thông qua hệ thống Telco Simulator.

Bài 22
Rust VoIP - Janus Media Server #21: Sip To App - Debug RTP Media
13:39

Rust VoIP - Janus Media Server #21: Sip To App - Debug RTP Media

Chào mừng bạn đến với Bài 21 của khóa học: "Lập trình VoIP với Rust: Janus Media Server".

Bài 21
Rust VoIP - Janus Media Server #20: Sip To App - Talking State
19:07

Rust VoIP - Janus Media Server #20: Sip To App - Talking State

Chào mừng bạn đến với Bài 20 của khóa học: "Lập trình VoIP với Rust: Janus Media Server". Sau khi đã xử lý xong các trạng thái chờ và các tình huống ngoại lệ (Edge Cases) ở bài trước, hôm nay chúng ta sẽ đi vào giai đoạn cuối cùng của luồng gọi SIP-to-App: → Talking State Đây là trạng thái đàm thoại chính thức, nơi các bản tin signaling cuối cùng được trao đổi để thiết lập luồng media hoàn chỉnh giữa: 📞 SIP Phone ↔ RTP ↔ Janus Media Server ↔ WebRTC Browser Trong video này, bạn sẽ học cách định nghĩa Talking State, build SIP 200 OK chuẩn RFC và quản lý toàn bộ signaling trong suốt thời gian cuộc gọi diễn ra.

Bài 20
Rust VoIP - Janus Media Server #19: Sip To App - End state and EDGE case
27:42

Rust VoIP - Janus Media Server #19: Sip To App - End state and EDGE case

Trong bài học này, chúng ta sẽ chưa đi ngay vào trạng thái Talking mà tập trung xử lý một phần cực kỳ quan trọng trong hệ thống VoIP Production: → End State → SIP Edge Cases → Resource Cleanup → SIP Dialog Management Video sẽ hướng dẫn cách xử lý các SIP message như: • CANCEL • BYE • ACK • PRACK đồng thời đảm bảo mọi tài nguyên trên Janus Media Server được giải phóng chính xác khi cuộc gọi kết thúc. Đây là bước cực kỳ quan trọng để tránh: • Memory leak • SIP retransmission loop • Zombie session • Treo signaling • Room/Handle không được cleanup

Bài 19

Hiển thị 9 / 26 bài học