2016-06-16 50 views
10

ビデオチャットの実装にはISBX/apprtc-iosコードを使用しています。これはiPhoneとシミュレータに最適です。私は2つのピア間でテキスト/文字列データを送信したいと私はRTCDataChannelクラスを使用しています。iOSでのWebRTCのRTCDataChannelの実装

私の実装は次のとおりです。接続を確立できません。それは常にステータスを与えるkRTCDataChannelStateConnecting RTCDataChannelを接続するにはどうしたらいいですか? iOS用のWebRTC RTCDataChannelで使用可能な実装はありますか?

- (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"); 
    } 
} 
+0

は、あなたがしようとしましたhttps://github.com/Mahabali/Apprtc-swift?私はWebデータチャネルと同じものがwebrtcであると確信していますか?データチャネルを作成するときにどのような応答が得られますか? – Dhilip

答えて

4

RTCDataChannelを通じてデータを送信できます。私がしたことはオファーを送る前です。以下の設定でRTCDataChannelInitを作成しました。

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; 

両方のデバイスが接続されると、デリゲート機能で状態をチェックしました。チャネルの状態は開いています。

RTCDataBuffer *buffer = [[RTCDataBuffer alloc] initWithData:[str dataUsingEncoding:NSUTF8StringEncoding] isBinary:NO]; 
BOOL x = [self.dataChannel sendData:buffer]; 

私が使用した構成は、ここに与えられた:

- (void)channelDidChangeState:(RTCDataChannel*)channel 
{ 
    NSLog(@"channel.state %u",channel.state); 
} 

は、その後、私は以下のコードごとにデータを送信 https://groups.google.com/forum/#!searchin/discuss-webrtc/RTCDataChannel/discuss-webrtc/9NObqxnItCg/mRvXBIwkA7wJ

+0

私はwebrtcチュートリアルのポイント(https://www.tutorialspoint.com/webrtc/webrtc_sending_messages.html)を見て、データのチャンネルを実装しました。ウェブ上でうまく動作していますが、メッセージを受信して​​いても送信できません。でる –

関連する問題