From 1abdd750493ab725ed41159c4161128653fd4af3 Mon Sep 17 00:00:00 2001 From: temasys support Date: Fri, 27 Jun 2014 17:17:21 +0800 Subject: [PATCH 1/9] [ENH]Support for socket.io 1.0.x Support is only for send message/send JSON/send event without ack. Binary are not supported. --- SocketIO.h | 6 + SocketIO.m | 714 ++++++++++++++++++++++++----------- SocketIOJSONSerialization.m | 3 +- SocketIOPacket.h | 8 + SocketIOPacket.m | 138 ++++++- SocketIOTransport.h | 8 + SocketIOTransportWebsocket.m | 23 +- SocketIOTransportXHR.m | 6 + submodules/socket-rocket | 2 +- 9 files changed, 658 insertions(+), 250 deletions(-) diff --git a/SocketIO.h b/SocketIO.h index 2fbb12e..67ceb23 100755 --- a/SocketIO.h +++ b/SocketIO.h @@ -21,6 +21,7 @@ #import #import "SocketIOTransport.h" +#import "SocketIOPacket.h" @class SocketIO; @class SocketIOPacket; @@ -41,6 +42,7 @@ typedef enum { } SocketIOErrorCodes; + @protocol SocketIODelegate @optional - (void) socketIODidConnect:(SocketIO *)socket; @@ -61,6 +63,8 @@ typedef enum { NSString *_endpoint; NSDictionary *_params; + SocketIOVersion _version; + __weak id _delegate; NSObject *_transport; @@ -75,7 +79,9 @@ typedef enum { // heartbeat NSTimeInterval _heartbeatTimeout; + NSTimeInterval _connectionTimeout; dispatch_source_t _timeout; + dispatch_source_t _heartbeat; NSMutableArray *_queue; diff --git a/SocketIO.m b/SocketIO.m index 61ff67a..63b9dc5 100755 --- a/SocketIO.m +++ b/SocketIO.m @@ -37,7 +37,9 @@ #endif static NSString* kResourceName = @"socket.io"; -static NSString* kHandshakeURL = @"%@://%@%@/%@/1/?t=%.0f%@"; +static NSString* kTransportPolling = @"polling"; +static NSString* kTransportWebsocket = @"websocket"; +static NSString* kHandshakeURL = @"%@://%@%@/%@/1/?EIO=2&transport=%@&t=%.0f%@"; static NSString* kForceDisconnectURL = @"%@://%@%@/%@/1/xhr-polling/%@?disconnect"; float const defaultConnectionTimeout = 10.0f; @@ -55,11 +57,10 @@ - (NSArray*) arrayOfCaptureComponentsMatchedByRegex:(NSString*)regex; - (void) setTimeout; - (void) onTimeout; +- (void) sendHeartbeat; - (void) onConnect:(SocketIOPacket *)packet; - (void) onDisconnect:(NSError *)error; - - (void) sendDisconnect; -- (void) sendHearbeat; - (void) send:(SocketIOPacket *)packet; - (NSString *) addAcknowledge:(SocketIOCallback)function; @@ -136,7 +137,9 @@ - (void) connectToHost:(NSString *)host NSString *protocol = _useSecure ? @"https" : @"http"; NSString *port = _port ? [NSString stringWithFormat:@":%d", _port] : @""; NSTimeInterval time = [[NSDate date] timeIntervalSince1970] * 1000; - NSString *handshakeUrl = [NSString stringWithFormat:kHandshakeURL, protocol, _host, port, kResourceName, time, query]; + NSString *handshakeUrl = [NSString stringWithFormat:kHandshakeURL, protocol, _host, port, kResourceName,kTransportPolling, time, query]; + //@"%@://%@%@/%@/1/?t=%.0f%@"; + //http:///socket.io/1/?t=