RTCPeerConnection 接口的 onnegotiationneeded property is an EventListener which specifies a function which is called to handle the negotiationneeded event when it occurs on an RTCPeerConnection instance. This event is fired when a change has occurred which requires session negotiation. This negotiation should be carried out as the offerer, because some session changes cannot be negotiated as the answerer.

Most commonly, the negotiationneeded event is fired after a send track is added to the RTCPeerConnection . If the session is modified in a manner that requires negotiation while a negotiation is already in progress, no negotiationneeded event will fire until negotiation completes, and only then if negotiation is still needed.

句法

RTCPeerConnection.onnegotiationneeded = eventHandler;
					

This should be set to a function you provide which is passed a single parameter: an 事件 object containing the negotiationneeded event. There's no additional information provided in the event; anything you need, you can get by examining the 特性对于 RTCPeerConnection .

范例

This example, derived from the example in Signaling and video calling , establishes a handler for negotiationneeded events to handle creating an offer, configuring the local end of the connection, and sending the offer to the remote peer.

pc.onnegotiationneeded = function() {
  pc.createOffer().then(function(offer) {
    return pc.setLocalDescription(offer);
  })
  .then(function() {
      // Send the offer to the remote peer through the signaling server
    });
  })
  .catch(reportError);
}
					

First, it creates the offer by calling createOffer() . When that succeeds, the offer is passed into setLocalDescription() to set the local description for the connection. Once that's succeeded in turn, the offer can be sent to the signaling server for delivery to the remote peer.

规范

规范 状态 注释
WebRTC 1.0: Real-time Communication Between Browsers
The definition of 'RTCPeerConnection.onnegotiationneeded' in that specification.
候选推荐 最初的规范。

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
onnegotiationneeded Chrome 24 Edge 15 Firefox 22 IE No Opera 43
43
Promise-based version.
不支持 37 — 43
Safari 11 WebView Android Yes Chrome Android Yes Firefox Android 44 Opera Android 43
43
Promise-based version.
不支持 37 — 43
Safari iOS Yes Samsung Internet Android 6.0

图例

完整支持

完整支持

不支持

不支持

见实现注意事项。

另请参阅

元数据

  • 最后修改: