2011-11-22 2 views
0

Unitt 라이브러리 (http://code.google.com/p/unitt/wiki/UnittWebSocketClient)를 사용하여 iOS (iPhone) 응용 프로그램 내 WebSocket을 통해 로컬 서버에 연결을 시도합니다.Unitt : WebSocket 연결 설정

프로젝트를 성공적으로 구성했고 필요한 프로젝트 파일을 포함하고 있지만 어떤 이유로 간단한 연결을 설정할 수 없습니다. 내가 사용하고있는 코드는 다음과 같습니다 SomeWebsocket.m에서

:

WebSocketConnectConfig* config = [WebSocketConnectConfig configWithURLString:@"ws://localhost" origin:nil protocols:nil tlsSettings:nil headers:nil verifySecurityKey:YES extensions:nil ]; 
config.closeTimeout = 15.0; 
ws = [WebSocket webSocketWithConfig:config delegate:self]; 
[ws open]; 

SomeViewController.m에서 :

불행하게도
MyWebSocket* myWS =[[MyWebSocket alloc] init]; 
[myWS startMyWebSocket]; 

, 내가 스크립트를 실행하는 유일한 출력 님, [console/NSLog를 통해], :

죄송합니다. 에러 발생됨.

그것은 닫혔다.

내가 생각할 수있는 유일한 점은 핸드 셰이크/로그인을 시도 할 때 필자가해야 할 추가 정보를 보내지 않고 있다는 것입니다. 예를 들어, 서버는 다른 것들 중에서 사용자 이름을 기대합니다. 이것이 문제가 될 수 있습니까, 아니면 무언가와 관련이있을 수 있습니까?

저는 꽤 오랫동안이 작업을 해왔습니다. 알아낼 수 있기 때문에 어떤 도움을 주시면 감사하겠습니다. 감사.

편집 : 변화 없음으로, 지금 또한과 같이 오류를 받고 있어요 :

* 어설 실패에 - [AsyncSocket doCFReadStreamCallback : forStream을 :], /사용자/jmorris/프로젝트/엑스 코드 /UnitT/UnittWebSocketClient/trunk/UnittWebSocketClient/AsyncSocket.m:2811

* 인해 캐치되지 않는 예외 'NSInternalInconsistencyException'응용 프로그램 종료, 이유는 : '잘못된 매개 변수를하지 만족! theReadStream = NULL'

답변

1

서버가 실행중인 웹 소켓 사양의 버전을 알고 있습니까? 귀하의 클라이언트 버전과 귀하의 서버 버전이 불일치가 예상됩니다. 사양의 최신 버전에서만 이러한 것들을 전달하고 처리하는 분명한 방법이 있습니다. 나는 최신 레브에 대한 업데이 트를 위해 일하고있다. 그러나 휴일은 늦게로 그런 것들을 조금 도전하게 만들었다. :)

0

방금 ​​출시 한 WebSocket 라이브러리 인 SocketRocket을 시도해야합니다. RFC 6455 (최신 표준)을 지원합니다. CocoaAsyncSocket 종속성이 없습니다.

0
WebSocketConnectConfig* config = [WebSocketConnectConfig 
            configWithURLString:kWebsocketURL 
            origin:nil 
            protocols:nil 
            tlsSettings:nil 
            headers:nil 
            verifySecurityKey:YES 
            extensions:nil]; 

config.closeTimeout = -1; 
config.timeout = -1; 
    // config.keepAlive = 5.0; //send ping from the server to keep socket alive 
WebSocket *ws1 = [WebSocket webSocketWithConfig:config delegate:shared]; 

이 코드는 제가 사용하고있는 코드입니다. 나는 stoptimer에 문제가있어서 클라이언트로부터 ping을하지는 않지만 서버 측에서만 문제가 있습니다.