单元:建立WebSocket连接



我正在使用unit库(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];

不幸的是,当我运行脚本时,唯一的输出是,[通过控制台/NSLog],:

哦。发生错误。

哦。它关闭。

我唯一能想到的是,当尝试执行握手/登录时,我没有发送一些我应该发送的额外信息。例如,服务器需要用户名。这是问题所在吗,还是其他无关的问题?

我研究这个已经有一段时间了,但我不能弄清楚,所以我非常感谢任何帮助。谢谢。

编辑:没有更改,我现在也得到这样的错误:

* assert failed in -[AsyncSocket doCFReadStreamCallback:forStream:],/用户/jmorris/项目/xCode/UnitT/UnittWebSocketClient/箱子/UnittWebSocketClient/AsyncSocket.m: 2811

*由于未捕获异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效参数不是= NULL'

你知道服务器运行的是什么版本的web套接字规范吗?我希望您的客户端版本和服务器版本不匹配。只有在规范的后期版本中,才有了一种清晰的方式来通信和处理这些事情。我正在做最新版本的更新,但是假期让这些事情变得有点挑战。:)

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

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

这是我正在使用的代码,它工作得很好。我有stoppingtimer的问题,所以,我不ping从客户端,但只是从服务器端。

相关内容

  • 没有找到相关文章

最新更新