2011-11-22 115 views
0

我使用Unitt庫(http://code.google.com/p/unitt/wiki/UnittWebSocketClient)嘗試通過我的iOS(iPhone)應用程序中的WebSockets建立到本地服務器的連接。單元:建立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]; 

不幸的是,當我運行該腳本,唯一的輸出是,[via console/NSLog],:

糟糕。發生錯誤。

糟糕。它關閉。

我唯一能想到的是,當試圖執行握手/登錄時,我不會發送一些我應該的附加信息。例如,服務器期望用戶名等。這可能是問題,或者它可能與此無關?

我一直在這個工作了很長一段時間,我可以'弄明白,所以我一定會感謝任何幫助。謝謝。

編輯:由於沒有改變,我現在也越來越錯誤,像這樣:

*斷言失敗 - [AsyncSocket doCFReadStreamCallback:forStream:], /用戶/ jmorris /項目/的Xcode /UnitT/UnittWebSocketClient/trunk/UnittWebSocketClient/AsyncSocket.m:2811

*終止應用程序由於未捕獲的異常 'NSInternalInconsistencyException',理由是: '無效的參數不能滿足 !theReadStream = NULL'

回答

1

您是否知道服務器運行的Web套接字規範的版本?我期望您的客戶端版本和服務器版本遇到不匹配。只有在規範的後續版本中,有一種清晰的溝通和處理方式。我正在研究最新版本的更新,但是到了最近,假期使得這些事情有點具有挑戰性。 :)

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]; 

這是我使用的代碼,它工作正常。我與停止者有問題,所以我不從客戶端ping,但只是從服務器端。

相關問題