Index: webrtc/examples/objc/AppRTCDemo/ARDWebSocketChannel.m |
diff --git a/webrtc/examples/objc/AppRTCDemo/ARDWebSocketChannel.m b/webrtc/examples/objc/AppRTCDemo/ARDWebSocketChannel.m |
index 395a22bbd1a49ca565938b706227651da50f9055..608a81e4b68082a004e8b8dbf3da14d8de304acc 100644 |
--- a/webrtc/examples/objc/AppRTCDemo/ARDWebSocketChannel.m |
+++ b/webrtc/examples/objc/AppRTCDemo/ARDWebSocketChannel.m |
@@ -13,6 +13,7 @@ |
#import "RTCLogging.h" |
#import "SRWebSocket.h" |
+#import "ARDSignalingMessage.h" |
#import "ARDUtilities.h" |
// TODO(tkchin): move these to a configuration object. |
@@ -197,3 +198,55 @@ static NSString const *kARDWSSMessagePayloadKey = @"msg"; |
} |
@end |
+ |
+@interface ARDLoopbackWebSocketChannel () <ARDSignalingChannelDelegate> |
+@end |
+ |
+@implementation ARDLoopbackWebSocketChannel |
+ |
+- (instancetype)initWithURL:(NSURL *)url restURL:(NSURL *)restURL { |
+ return [super initWithURL:url restURL:restURL delegate:self]; |
+} |
+ |
+#pragma mark - ARDSignalingChannelDelegate |
+ |
+- (void)channel:(id<ARDSignalingChannel>)channel |
+ didReceiveMessage:(ARDSignalingMessage *)message { |
+ switch (message.type) { |
+ case kARDSignalingMessageTypeOffer: { |
+ // Change message to answer, send back to server. |
+ ARDSessionDescriptionMessage *sdpMessage = |
+ (ARDSessionDescriptionMessage *)message; |
+ RTCSessionDescription *description = sdpMessage.sessionDescription; |
+ NSString *dsc = description.description; |
+ dsc = [dsc stringByReplacingOccurrencesOfString:@"offer" |
+ withString:@"answer"]; |
+ RTCSessionDescription *answerDescription = |
+ [[RTCSessionDescription alloc] initWithType:@"answer" sdp:dsc]; |
+ ARDSignalingMessage *answer = |
+ [[ARDSessionDescriptionMessage alloc] |
+ initWithDescription:answerDescription]; |
+ NSLog(@"Loopback offer -> answer"); |
+ [self sendMessage:answer]; |
tkchin_webrtc
2015/09/11 17:53:53
Interesting. I was thinking you could call peer co
Chuck
2015/09/28 16:26:40
That would work as well, I just followed the js/we
|
+ break; |
+ } |
+ case kARDSignalingMessageTypeAnswer: |
+ // Should not receive answer in loopback scenario. |
+ break; |
+ case kARDSignalingMessageTypeCandidate: |
+ // Send back to server. |
+ NSLog(@"Loopback ICE candidate"); |
+ [self sendMessage:message]; |
+ break; |
+ case kARDSignalingMessageTypeBye: |
+ // Nothing to do. |
+ return; |
+ } |
+} |
+ |
+- (void)channel:(id<ARDSignalingChannel>)channel |
+ didChangeState:(ARDSignalingChannelState)state { |
+} |
+ |
+@end |
+ |