1
SocketRocket을 사용자 지정 프레임 워크로 이동 했으므로 이제 대리자 메서드가 호출되지 않습니다. 이 코드는 프레임 워크에 없을 때 작동하며 주 스레드에서 실행 중이며 대리자는 nill이 아닙니다.프레임 워크에서 SocketRocket 대리자 메서드가 호출되지 않습니다.
_mSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"wss://websocket.url.here"]]];
_mSocket.delegate = self;
attempts = 0;
[_mSocket open];
- (void)webSocketDidOpen:(SRWebSocket *)webSocket;
{
NSLog(@"Websocket Connected");
// Configure SSL/TLS settings
NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:3];
[settings setObject:@"wss://websocket.test.clearcaptions.com" forKey:(NSString *)kCFStreamSSLPeerName];
// // Allow self-signed certificates
[settings setObject:[NSNumber numberWithBool:YES]
forKey:(NSString *)kCFStreamSSLPeerName];
// // In fact, don't even validate the certificate chain
[settings setObject:[NSNumber numberWithBool:NO]
forKey:(NSString *)kCFStreamSSLValidatesCertificateChain];
}
- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;
{
NSLog(@":(Websocket Failed With Error %@", error);
_mSocket = nil;
[self _reconnect];
}
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;
{
NSLog(@"Received \"%@\"", message);
}
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean;
{
NSLog(@"WebSocket closed");
[mDelegate protocolMessageAvailable:@"" msgType:STATE_NETWORK_OFFLINE];
_mSocket = nil;
}
- (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload;
{
NSLog(@"Websocket received pong");
}
이것이 내 문제라고 생각합니다 ... 해결책을 자세히 설명해 주시겠습니까? – SlimCheney
실제로 문제는 didFinishLaunchingWithOptions 메서드에서 로컬 변수 – SlimCheney
내 문제와 동일한 개념으로 선언했을 때 위임 클래스가 범위를 벗어나는 것입니다. – user1079052