首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RTCDataChannel对WebRTC在iOS中的影响

RTCDataChannel对WebRTC在iOS中的影响
EN

Stack Overflow用户
提问于 2016-06-16 05:15:30
回答 1查看 4.1K关注 0票数 10

我正在使用ISBX/代码进行视频聊天实现。该工作在iPhone和仿真器中非常完善。我想在两个对等点之间发送文本/字符串数据,我使用的是RTCDataChannel类。

以下是我的实现,我无法建立联系。它总是给予状态kRTCDataChannelStateConnecting,我如何才能使RTCDataChannel连接?WebRTC RTCDataChannel for iOS是否有可用的工作实现?

代码语言:javascript
复制
- (void)createNewDataChannel {
    if (self.clientDataChannel) {
        switch(self.clientDataChannel.state) {
            case kRTCDataChannelStateConnecting:
                NSLog(@"kRTCDataChannelStateConnecting");
                break;
            case kRTCDataChannelStateOpen:
                NSLog(@"kRTCDataChannelStateOpen");
                break;
            case kRTCDataChannelStateClosing:
                NSLog(@"kRTCDataChannelStateClosing");
                break;
            case kRTCDataChannelStateClosed:
                NSLog(@"kRTCDataChannelStateClosed");
                break;
            default:
                NSLog(@"Unknown");
        }
        return;
    }
    if (self.peerConnection == nil) {
        NSLog(@"Peerconnection is nil");
    }

    RTCDataChannelInit *DataChannelInit = [[RTCDataChannelInit alloc] init];
    DataChannelInit.maxRetransmits = 0;
    DataChannelInit.isOrdered=false;
    DataChannelInit.maxRetransmitTimeMs = -1;
    DataChannelInit.isNegotiated = false;
    DataChannelInit.streamId = 25;
    RTCDataChannel *dataChannel =[_peerConnection createDataChannelWithLabel:@"commands" config:DataChannelInit];
    dataChannel.delegate=self;
    self.clientDataChannel = dataChannel;

    if (self.clientDataChannel == nil) {
        NSLog(@"Datachannel is nil");
    }
    else {
        NSLog(@"Datachannel is working");
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-08 12:51:26

我能够通过RTCDataChannel发送数据。我所做的是在发出报盘之前。我用下面的配置创建了RTCDataChannelInit。

代码语言:javascript
复制
RTCDataChannelInit *datainit = [[RTCDataChannelInit alloc] init];

datainit.isNegotiated = YES;

datainit.isOrdered = YES;

datainit.maxRetransmits = 30;

datainit.maxRetransmitTimeMs = 30000;

datainit.streamId = 1;
self.dataChannel = [_peerConnection createDataChannelWithLabel:@"commands" config:datainit];
self.dataChannel.delegate=self;

一旦两个设备连接起来,我就在委托函数中检查状态。通道的状态是开放的。

代码语言:javascript
复制
- (void)channelDidChangeState:(RTCDataChannel*)channel
{
    NSLog(@"channel.state %u",channel.state);
}

然后按照以下代码发送数据:

代码语言:javascript
复制
RTCDataBuffer *buffer = [[RTCDataBuffer alloc] initWithData:[str dataUsingEncoding:NSUTF8StringEncoding] isBinary:NO];
BOOL x = [self.dataChannel sendData:buffer];

我使用的配置是在这里给出的:https://groups.google.com/forum/#!searchin/discuss-webrtc/RTCDataChannel/discuss-webrtc/9NObqxnItCg/mRvXBIwkA7wJ

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37850376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档