我使用的是https://github.com/pkyeck/socket.IO-objcGitHub回购。SocketIO抛出握手失败的错误,服务器返回状态代码400。我已经使用socket.io Javascript库成功连接到服务器。
- (void) viewDidLoad
{
[super viewDidLoad];
socketIO = [[SocketIO alloc] initWithDelegate:self];
socketIO.useSecure = YES;
[socketIO connectToHost:@"[url]" onPort:443];
}
-
SocketTesterARC[2457:60b] Connecting to socket with URL: https://[url]:443/socket.io/1/?t=1397682804193
SocketTesterARC[2457:60b] didReceiveResponse() 400
SocketTesterARC[2457:60b] ERROR: handshake failed ... Server returned status code 400
SocketTesterARC[2457:60b] onError() Error Domain=SocketIOError Code=-6 "Error Domain=SocketIOError Code=400 "Server returned status code 400" UserInfo=0x1780718c0 {NSLocalizedDescription=Server returned status code 400}" UserInfo=0x178072740 {NSLocalizedDescription=Error Domain=SocketIOError Code=400 "Server returned status code 400" UserInfo=0x1780718c0 {NSLocalizedDescription=Server returned status code 400}}
检查版本号,猜测您使用的是0.9版本,服务器端代码使用的是1.0版本。服务器和客户端的版本应该相同。
当我将Mac的IP硬编码到iOS应用程序代码中时,我也遇到了这样的错误。一旦我有了动态IP,有一天它被更改了,并出现了-pfff-握手错误和超时。