//
//  WebSocketClient.h
//  LoginDemo
//
//  Created by 初程程 on 2018/7/4.
//  Copyright © 2018年 Facebook. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <React/RCTBridge.h>
#import <React/RCTUtils.h>
//#import "ReactiveCocoa.h"
@interface WebSocketClient : NSObject
@property (nonatomic ,assign ,readonly)BOOL canUse;
@property (nonatomic ,copy)void(^listenerBlock)(NSError *err);
@property (nonatomic ,copy)void(^subscribeListenerBlock)(NSError *err);
@property (nonatomic ,copy)void(^downstreamListenerBlock)(NSString *topic, NSString *data);
@property (nonatomic ,strong)NSMutableArray<NSString *> *topics;

+ (WebSocketClient *)sharedInstance;
- (void)initConfig;
- (void)subscribeTopic:(NSString *)topic;
- (void)cancelTopic:(NSString *)topic;
- (void)invokeWithTopic:(NSString *)topic
                 params:(id)params;
- (void)publish:(NSString *)topic
         params:(id)params
 publishResolve:(RCTPromiseResolveBlock)resolve
publishRejecter:(RCTPromiseRejectBlock)rejecter;
- (void)startListener;
- (void)stopListener:(void(^)(BOOL isSuccess))callback;
- (BOOL)connectState;
@end
