Unitt:建立WebSocket连接

时间:2011-11-22 00:31:23

标签: iphone objective-c ios xcode websocket

我正在使用Unitt库(http://code.google.com/p/unitt/wiki/UnittWebSocketClient)尝试通过iOS(iPhone)应用程序中的WebSockets建立与本地服务器的连接。

我已成功配置项目并包含必要的项目文件,但由于某种原因我无法建立简单的连接。我正在使用的代码是:

在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:],   /Users/jmorris/Projects/xCode/UnitT/UnittWebSocketClient/trunk/UnittWebSocketClient/AsyncSocket.m:2811

     

* 由于未捕获的异常'NSInternalInconsistencyException'而终止应用,原因:'参数无效   满足:theReadStream!= NULL'

3 个答案:

答案 0 :(得分:1)

您知道服务器正在运行的Web套接字规范的版本吗?我希望您的客户端版本和服务器版本出现不匹配的情况。只有在规范的后续版本中才有清晰的方式来沟通和处理这些事情。我正在研究最新版本的更新,但是假期让这些事情最近变得有些挑战。 :)

答案 1 :(得分:0)

您应该尝试SocketRocket,我们刚刚发布的WebSocket库。支持RFC 6455(最新标准)。没有CocoaAsyncSocket依赖。

答案 2 :(得分: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,而是从服务器端ping。