You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter WebRTC无法创建DataChannel问题及解决方法

Flutter WebRTC DataChannel 无法触发onDataChannel事件的解决方法

问题场景

通过flutter_webrtc包初始化RTCPeerConnection? _peerConnection;后,音视频流可正常传输,但创建DataChannel后,Answer端的onDataChannel始终未收到事件,DataChannel完全无响应。

错误代码示例

Offer端错误代码

_createDataChanel() async {
  final chanInit = RTCDataChannelInit()
    ..negotiated = true
    ..maxRetransmits = 30;

  _dataChannel = await _peerConnection!.createDataChannel('chat', chanInit);
  _dataChannel!.onMessage = (data) {
    print(data);
  };
}

Answer端错误代码

_subscribeDataChanel() {
  _peerConnection!.onDataChannel = (channel) {
    _dataChannel = channel;
    _dataChannel!.onMessage = (data) {
      print(data);
    };
  };
}

问题根源

创建DataChannel的时机错误:必须先创建DataChannel,再生成Offer或Answer,否则SDP协商中不会包含DataChannel的相关信息,导致Answer端无法感知到DataChannel的存在。

修正后代码

Offer端修正代码

createOffer(Connection connection) async {
    await _createDataChanel();

    final offerDesc = await _peerConnection!.createOffer(offerSdpConstraints);
    await _peerConnection!.setLocalDescription(offerDesc);
    // 发送到信令服务器等后续操作...
}

Answer端修正代码

createAnswer(Connection connection) async {
    _subscribeDataChanel();
    // 从信令服务器获取offer等前置操作...
}

内容的提问来源于stack exchange,提问作者Marvin Heemeyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:25:31