默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
视频聊天使用WebRTC RTCDataChannel 出现问题求教
阅读(30010) | 评论(3 收藏 淘帖
刚接触RTCDataChannel 的时候, 运行别人的Demo, 发现一个问题. 发起者发起, 接受者接受, 成功, DataChannel 开启成功, 发起者可以发送, 接受者可以收到反之则不行. 经过测试安卓和iOS都出现了这个问题(自己跟自己测试, 即iOS->iOS, Android->Android).有意思的是, 安卓和iOS可以. 经过对比iOS采用双方都采用初始化赋值给全局变量. 安卓采用都采用初始化后不赋值方式, 在协议回调中赋值给全局变量的方式,
随之改为全部初始化, 但是接收端在协议回调中重新再次赋值一次, 发起端不赋值的方式, DataChannel 可以使用. 原因不明.如有知道的请告知
iOS代码
初始化
RTCDataChannelInit *config = [[RTCDataChannelInit alloc] init];
    config.isOrdered = YES;
    _dataChannel = [_peerConnection createDataChannelWithLabel:@"commands" config:config];
    _dataChannel.delegate = self;

//回调中再次赋值_isInititor用来判断是发起者还是接受者的一个全局变量

- (void)peerConnection:(RTCPeerConnection *)peerConnection
    didOpenDataChannel:(RTCDataChannel *)dataChannel {
    dispatch_async_on_main_queue(^{
        DSpersonKitLog(@"RTCDataChannel 通道已经打开");
        //发起者和接受者都需要创建, 但是接受者需要在通道打开的时候重新赋值一次, 原因不明
        if (!_isInititor) {
            _dataChannel = dataChannel;
            _dataChannel.delegate = self;
        }
    });
}


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

推荐方案
评论 3
你是直接扒的WebRTC最新源码里的Demo来测的吗
引用:JackJiang 发表于 2017-09-05 12:11
你是直接扒的WebRTC最新源码里的Demo来测的吗

不是最新的 是别人维护的在github
引用:dsperson 发表于 2017-09-05 13:04
不是最新的 是别人维护的在github

没有用过WebRTC的代码,暂时帮不到你
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部