diff --git a/SocketIO/Source/SIOSocket.h b/SocketIO/Source/SIOSocket.h index 01f0e95..f4a6314 100644 --- a/SocketIO/Source/SIOSocket.h +++ b/SocketIO/Source/SIOSocket.h @@ -39,6 +39,7 @@ typedef NSArray SIOParameterArray; // Emitters - (void)emit:(NSString *)event; - (void)emit:(NSString *)event args:(SIOParameterArray *)args; +- (void)emit:(NSString *)event dictionaryArgs:(NSDictionary *)args; - (void)close; diff --git a/SocketIO/Source/SIOSocket.m b/SocketIO/Source/SIOSocket.m index 63b4837..a5a8720 100644 --- a/SocketIO/Source/SIOSocket.m +++ b/SocketIO/Source/SIOSocket.m @@ -181,6 +181,20 @@ - (void)emit:(NSString *)event args:(SIOParameterArray *)args { }); } +- (void)emit:(NSString *)event dictionaryArgs:(NSDictionary *)args { + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:args options:0 error:nil]; + NSString *params = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + + if (args.count == 0) { + [self emit:event]; + return; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [self.javascriptContext evaluateScript: [NSString stringWithFormat: @"objc_socket.emit('%@', %@);", event, params]]; + }); +} + - (void)close { [self.javascriptWebView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: @"about:blank"]]]; [self.javascriptWebView reload];