Học lập trình
miễn phí, chất lượng cao
Khám phá các khóa học về Frontend, Backend và DevOps. Không cần đăng ký, không mất phí — chỉ cần bắt đầu học.
Khám phá khóa họcRust VoIP: Janus Media Server
Backend
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.

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).

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.

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.

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.

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".
WebRTC Peer to Peer với Rust
Backend
Rust WebRTC P2P #32 - Tổng kết và kế hoạch tiếp theo
Sau một hành trình dài từ những dòng code đầu tiên, trong video này chúng ta sẽ cùng nhìn lại toàn bộ hệ thống đã xây dựng, tổng kết những gì đã đạt được, đồng thời phân tích các hạn chế của mô hình P2P và định hướng lộ trình học tập tiếp theo với các hệ thống Media Server chuyên nghiệp.

Rust WebRTC P2P #31 - Test End-to-End: 2 real browser
Trong phần 31 này, chúng ta sẽ thực hiện bước quan trọng nhất sau toàn bộ quá trình xây dựng hệ thống: Test End-to-End (E2E) với hai trình duyệt thật. Đây là bước kiểm chứng toàn bộ pipeline từ build, deploy cho đến thực hiện cuộc gọi P2P thực tế giữa hai user.

Rust WebRTC P2P #30 - ICE Candidate Forwarding trong Talking State - End State
Trong phần 30 này, chúng ta sẽ hoàn thiện mảnh ghép cuối cùng trong vòng đời cuộc gọi: EndState. Đây là trạng thái đảm nhiệm việc kết thúc cuộc gọi một cách an toàn, đảm bảo hệ thống không bị rò rỉ tài nguyên và tất cả các bên đều được thông báo chính xác khi cuộc gọi dừng lại.

Rust WebRTC P2P #29 - P2PTalkingState — Heartbeat + Timeout
Trong phần 29 này, chúng ta sẽ tiến tới trạng thái quan trọng nhất trong vòng đời cuộc gọi: P2PTalkingState. Đây là giai đoạn hai người dùng đang đàm thoại trực tiếp với nhau. Tuy nhiên, vì đây là kết nối P2P (media không đi qua server), chúng ta cần một cơ chế để server biết cuộc gọi còn đang diễn ra hay đã bị ngắt kết nối một cách “im lặng”.

Rust WebRTC P2P #28 - P2PWaitingCalleeSDPState → P2PTalkingState
Trong phần 28 này, chúng ta sẽ thực hiện bước cuối cùng trong quy trình Signaling: Triển khai trạng thái P2PWaitingCalleeSDPState. Đây là giai đoạn quan trọng để Server điều phối bản tin SDP Answer từ người bị gọi (Callee) quay trở lại cho người gọi (Caller), đồng thời hoàn tất việc trao đổi các ICE Candidates để hai bên có thể thiết lập kết nối Media.

Rust WebRTC P2P #27 - call_answer_req — Codes 100/180/486
Trong phần 27 này, chúng ta tiếp tục hoàn thiện logic phía Server bằng cách xây dựng lệnh call_answer_req. Đây là bước quan trọng giúp người bị gọi (Callee) phản hồi lại yêu cầu từ người gọi, thông báo trạng thái đổ chuông, từ chối hoặc chấp nhận cuộc gọi theo các mã chuẩn trong signaling.