내가 socket.io를 사용하는 NodeJS 서버가 및 코드는 다음과 같은 것입니다 포트 8000을 청취 발생 이 서버에 연결할 수있는 웹 클라이언트는 정상적으로 작동합니다. 따라서 서버 코드는 문제가 아닙니다. 문제는 다음에 설명 할 iOS 클라이언트에서 발생합니다.아이폰 OS 클라이언트
platform :ios
pod 'SocketRocket', '0.2.0'
#import <SocketRocket/SRWebSocket.h>
@interface MyViewController : UIViewController<SRWebSocketDelegate>
...
@property (strong, nonatomic) SRWebSocket *socket;
@end
MyViewController.m에서 MyViewController.h에서 :
는
아이폰 OS 클라이언트는 그것을 설치, 나는 다음으로 Podfile을 Cocoapods을 사용하고있는 SocketRocket를 사용
@synthesize socket = _socket;
...
- (void)viewDidLoad
{
_socket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://127.0.0.1:8000"]]];
_socket.delegate = self;
[_socket open];
NSLog(@"Connect");
}
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message {
NSLog(@"Error didReceiveMessage");
}
- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error {
NSLog(@"Error connecting websocket");
}
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean {
NSLog(@"Error didCloseWithCode %d: %@", code, reason);
}
iOS 클라이언트가 실행되면 "연결"로그가 나타납니다. 그러나 대리자 didCloseWithCode()도 호출됩니다. 그리고 로그는
Error didCloseWithCode 0: Stream end encountered
나는 전문가의 도움을 얻을 시간이 많이 들었습니다. 왜 "스트림 종료"문제가 발생합니까? NodeJS 서버는 웹 클라이언트와 연결할 수 있기 때문에 잘 작동합니다. iOS 클라이언트에서 내가 뭘 잘못하고 있으며 어떻게 수정할 수 있습니까?
업데이트 : 서버에 JavaScript 코드를 추가하여 util.log() 호출을 표시하십시오. 웹 클라이언트가 연결되면 콘솔에 "클라이언트 연결"메시지가 표시되고 iOS 클라이언트가 연결을 시도하면 콘솔에는 아무것도 표시되지 않음
한 번 봐 걸릴 수 있습니다 당신은 당신을 말할 수있는 서버 측에서 어떤 로깅을 수행 서버가 iOS 클라이언트로부터 연결을 수신합니까? –
@MattBridg es : 질문을 업데이트했습니다. WebClient가 연결되면 콘솔에서 메시지를 기록합니다. 하지만 iOS 클라이언트가 연결을 시도 할 때 아닙니다. –