RTCPeerConnection
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
* Some parts of this feature may have varying levels of support.
Giao diện RTCPeerConnection biểu diễn một kết nối WebRTC giữa máy tính cục bộ và một máy ngang hàng từ xa.
Giao diện này cung cấp các phương thức để kết nối với máy ngang hàng từ xa, duy trì và theo dõi kết nối, rồi đóng kết nối khi không còn cần thiết.
Hàm khởi tạo
RTCPeerConnection()-
Trả về một
RTCPeerConnectionmới, đại diện cho một kết nối giữa thiết bị cục bộ và một máy ngang hàng từ xa.
Thuộc tính thể hiện
Cũng kế thừa các thuộc tính từ EventTarget.
canTrickleIceCandidatesRead only-
Trả về một giá trị boolean cho biết máy ngang hàng từ xa có thể chấp nhận ICE candidate được gửi dần hay không.
connectionStateRead only-
Cho biết trạng thái hiện tại của kết nối ngang hàng bằng cách trả về một trong các chuỗi:
new,connecting,connected,disconnected,failedhoặcclosed. currentLocalDescriptionRead only-
Trả về một đối tượng
RTCSessionDescriptionmô tả đầu cục bộ của kết nối như lần thương lượng thành công gần nhất kể từ khiRTCPeerConnectionnày hoàn tất việc thương lượng và kết nối với máy ngang hàng từ xa. Thuộc tính này cũng bao gồm danh sách bất kỳ ICE candidate nào đã được bộ máy ICE tạo ra kể từ khi offer hoặc answer được mô tả được khởi tạo lần đầu. currentRemoteDescriptionRead only-
Trả về một đối tượng
RTCSessionDescriptionmô tả đầu từ xa của kết nối như lần thương lượng thành công gần nhất kể từ khiRTCPeerConnectionnày hoàn tất việc thương lượng và kết nối với máy ngang hàng từ xa. Thuộc tính này cũng bao gồm danh sách bất kỳ ICE candidate nào đã được bộ máy ICE tạo ra kể từ khi offer hoặc answer được mô tả được khởi tạo lần đầu. iceConnectionStateRead only-
Trả về một chuỗi cho biết trạng thái của bộ máy ICE gắn với
RTCPeerConnectionnày. Giá trị có thể là một trong các trạng thái sau:new,checking,connected,completed,failed,disconnectedhoặcclosed. iceGatheringStateRead only-
Trả về một chuỗi mô tả trạng thái thu thập ICE của kết nối. Điều này cho phép bạn phát hiện, chẳng hạn, khi quá trình thu thập ICE candidate đã hoàn tất. Các giá trị có thể là:
new,gatheringhoặccomplete. localDescriptionRead only-
Trả về một đối tượng
RTCSessionDescriptionmô tả phiên cho đầu cục bộ của kết nối. Nếu chưa được đặt, thuộc tính này trả vềnull. peerIdentityRead only-
Trả về một
Promiseđược giải quyết thành mộtRTCIdentityAssertionchứa một chuỗi định danh máy ngang hàng từ xa. Khi promise này được giải quyết thành công, danh tính thu được sẽ là danh tính máy ngang hàng đích và sẽ không thay đổi trong suốt thời gian kết nối. pendingLocalDescriptionRead only-
Trả về một đối tượng
RTCSessionDescriptionmô tả một thay đổi cấu hình đang chờ xử lý cho đầu cục bộ của kết nối. Nó không mô tả trạng thái hiện tại của kết nối, mà là trạng thái có thể xuất hiện trong tương lai gần. pendingRemoteDescriptionRead only-
Trả về một đối tượng
RTCSessionDescriptionmô tả một thay đổi cấu hình đang chờ xử lý cho đầu từ xa của kết nối. Nó không mô tả trạng thái hiện tại của kết nối, mà là trạng thái có thể xuất hiện trong tương lai gần. remoteDescriptionRead only-
Trả về một đối tượng
RTCSessionDescriptionmô tả phiên, bao gồm thông tin cấu hình và phương tiện, cho đầu từ xa của kết nối. Nếu chưa được đặt, giá trị trả về lànull. sctpRead only-
Trả về một đối tượng
RTCSctpTransportmô tả lớp truyền tải SCTP mà qua đó dữ liệu SCTP được gửi và nhận. Nếu SCTP chưa được thương lượng, giá trị này lànull. signalingStateRead only-
Trả về một chuỗi mô tả trạng thái của quá trình báo hiệu ở đầu cục bộ của kết nối trong khi đang kết nối hoặc kết nối lại với một máy ngang hàng khác. Giá trị có thể là một trong các trạng thái sau:
stable,have-local-offer,have-remote-offer,have-local-pranswer,have-remote-pranswerhoặcclosed.
Phương thức tĩnh
RTCPeerConnection.generateCertificate()-
Tạo một chứng chỉ X.509 và khóa riêng tương ứng của nó, trả về một
Promiseđược giải quyết thànhRTCCertificatemới khi quá trình tạo hoàn tất.
Phương thức thể hiện
Cũng kế thừa các phương thức từ EventTarget.
addIceCandidate()-
Thêm một candidate từ xa mới vào
remoteDescriptioncủaRTCPeerConnection, mô tả trạng thái của đầu từ xa của kết nối. addTrack()-
Thêm một
MediaStreamTrackmới vào tập các track sẽ được truyền tới máy ngang hàng còn lại. addTransceiver()-
Tạo một
RTCRtpTransceivermới và thêm nó vào tập các transceiver gắn với kết nối. Mỗi transceiver biểu diễn một luồng hai chiều, với cả mộtRTCRtpSendervà mộtRTCRtpReceivergắn với nó. close()-
Đóng kết nối ngang hàng hiện tại.
createAnswer()-
Bắt đầu tạo một câu trả lời SDP cho một lời mời nhận được từ một máy ngang hàng từ xa trong quá trình thương lượng offer/answer của một kết nối WebRTC. Câu trả lời chứa thông tin về bất kỳ phương tiện nào đã được gắn vào phiên, các codec và tùy chọn được trình duyệt hỗ trợ, cùng với bất kỳ ICE candidate nào đã được thu thập.
createDataChannel()-
Bắt đầu tạo một kênh mới được liên kết với máy ngang hàng từ xa, qua đó có thể truyền bất kỳ loại dữ liệu nào. Điều này hữu ích cho nội dung kênh phụ, chẳng hạn như hình ảnh, truyền tệp, chat văn bản, gói cập nhật trò chơi, v.v.
createOffer()-
Bắt đầu tạo một lời mời SDP nhằm khởi động một kết nối WebRTC mới tới máy ngang hàng từ xa. Lời mời SDP bao gồm thông tin về bất kỳ đối tượng
MediaStreamTracknào đã được gắn vào phiên WebRTC, codec và tùy chọn được trình duyệt hỗ trợ, cũng như mọi candidate đã được bộ máy ICE thu thập, với mục đích được gửi qua kênh báo hiệu tới một máy ngang hàng tiềm năng để yêu cầu kết nối hoặc cập nhật cấu hình của kết nối hiện có. getConfiguration()-
Trả về một đối tượng cho biết cấu hình hiện tại của kết nối.
getIdentityAssertion()-
Bắt đầu thu thập một chứng thực danh tính và trả về một
Promiseđược giải quyết thành chuỗi mã hóa chứng thực danh tính. Điều này chỉ có tác dụng nếusignalingStatekhông phải làclosed. getReceivers()-
Trả về một mảng các đối tượng
RTCRtpReceiver, mỗi đối tượng biểu diễn một bộ nhận RTP. getSenders()-
Trả về một mảng các đối tượng
RTCRtpSender, mỗi đối tượng biểu diễn bộ gửi RTP chịu trách nhiệm truyền dữ liệu của một track. getStats()-
Trả về một
Promiseđược giải quyết với dữ liệu cung cấp thống kê về toàn bộ kết nối hoặc vềMediaStreamTrackđược chỉ định. getTransceivers()-
Trả về danh sách tất cả các đối tượng
RTCRtpTransceiverđang được dùng để gửi và nhận dữ liệu trên kết nối. removeTrack()-
Yêu cầu đầu cục bộ của kết nối ngừng gửi phương tiện từ track được chỉ định, mà không thực sự xóa
RTCRtpSendertương ứng khỏi danh sách sender như được báo cáo bởigetSenders(). Nếu track đã dừng, hoặc không có trong danh sách sender của kết nối, phương thức này không có tác dụng. restartIce()-
Cho phép dễ dàng yêu cầu thực hiện lại việc thu thập ICE candidate ở cả hai đầu của kết nối. Điều này đơn giản hóa quá trình bằng cách cho phép cùng một phương thức được dùng bởi cả bên gọi lẫn bên nhận để kích hoạt khởi động lại ICE.
setConfiguration()-
Đặt cấu hình hiện tại của kết nối dựa trên các giá trị được bao gồm trong đối tượng chỉ định. Điều này cho phép bạn thay đổi các máy chủ ICE được kết nối sử dụng và chính sách truyền tải nào sẽ được dùng.
setIdentityProvider()-
Đặt Nhà cung cấp danh tính (IdP) theo bộ ba được truyền vào tham số: tên của nó, giao thức được dùng để giao tiếp với nó và tên người dùng. Giao thức và tên người dùng là tùy chọn.
setLocalDescription()-
Thay đổi mô tả cục bộ gắn với kết nối. Mô tả này chỉ định các thuộc tính của đầu cục bộ của kết nối, bao gồm định dạng media. Nó trả về một
Promiseđược thực thi khi mô tả đã được thay đổi, theo cách bất đồng bộ. setRemoteDescription()-
Đặt mô tả phiên được chỉ định làm offer hoặc answer hiện tại của máy ngang hàng từ xa. Mô tả này chỉ định các thuộc tính của đầu từ xa của kết nối, bao gồm định dạng media. Nó trả về một
Promiseđược thực thi khi mô tả đã được thay đổi, theo cách bất đồng bộ.
Phương thức lỗi thời
addStream()Deprecated Non-standard-
Thêm một
MediaStreamlàm nguồn cục bộ cho âm thanh hoặc video. Thay vì dùng phương thức lỗi thời này, bạn nên dùngaddTrack()một lần cho mỗi track bạn muốn gửi đến máy ngang hàng từ xa. createDTMFSender()Deprecated Non-standard-
Tạo một
RTCDTMFSendermới, gắn với mộtMediaStreamTrackcụ thể, để có thể gửi tín hiệu điện thoại DTMF qua kết nối. removeStream()Deprecated Non-standard-
Xóa một
MediaStreamlàm nguồn cục bộ cho âm thanh hoặc video. Vì phương thức này đã lỗi thời, bạn nên dùngremoveTrack().
Sự kiện
Lắng nghe các sự kiện này bằng addEventListener() hoặc bằng cách gán trình lắng nghe sự kiện cho thuộc tính oneventname của giao diện này.
connectionstatechange-
Được gửi khi trạng thái kết nối tổng thể của
RTCPeerConnectionthay đổi. datachannel-
Được gửi khi máy ngang hàng từ xa thêm một
RTCDataChannelvào kết nối. icecandidate-
Được gửi để yêu cầu candidate được chỉ định được truyền tới máy ngang hàng từ xa.
icecandidateerror-
Được gửi tới kết nối nếu xảy ra lỗi trong quá trình thu thập ICE candidate. Sự kiện này mô tả lỗi.
iceconnectionstatechange-
Được gửi khi trạng thái của kết nối ICE thay đổi, chẳng hạn khi nó bị ngắt.
icegatheringstatechange-
Được gửi khi trạng thái thu thập của lớp ICE, được phản ánh bởi
iceGatheringState, thay đổi. Điều này cho biết quá trình thương lượng ICE chưa bắt đầu (new), đã bắt đầu thu thập candidate (gathering) hay đã hoàn tất (complete). negotiationneeded-
Được gửi khi cần thực hiện thương lượng hoặc thương lượng lại kết nối ICE; việc này có thể xảy ra khi mở kết nối lần đầu cũng như khi cần thích ứng với các điều kiện mạng thay đổi. Bên nhận nên phản hồi bằng cách tạo một offer và gửi nó đến máy ngang hàng còn lại.
signalingstatechange-
Được gửi khi trạng thái báo hiệu của kết nối ICE thay đổi.
track-
Được gửi sau khi một track mới được thêm vào một trong các thể hiện
RTCRtpReceivertạo nên kết nối.
Sự kiện lỗi thời
addstreamDeprecated Non-standard-
Được gửi khi một
MediaStreammới được thêm vào kết nối. Thay vì lắng nghe sự kiện lỗi thời này, bạn nên lắng nghe các sự kiệntrack; một sự kiện được gửi cho mỗiMediaStreamTrackđược thêm vào kết nối. removestreamDeprecated Non-standard-
Được gửi khi một
MediaStreambị xóa khỏi kết nối. Thay vì lắng nghe sự kiện lỗi thời này, bạn nên lắng nghe các sự kiệnremovetracktrên từng luồng.
Thông số kỹ thuật
| Specification |
|---|
| WebRTC: Real-Time Communication in Browsers> # interface-definition> |
Tương thích trình duyệt
Xem thêm
- https://github.com/jesup/nightly-gupshup/blob/master/static/js/chat.js
- Bắt đầu với WebRTC
- TutorRoom: ứng dụng Node.js để chụp video HTML, video ngang hàng và chia sẻ tệp (mã nguồn trên GitHub)