Jan49
Jan49

Reputation: 1818

how to check whether web socket is active or not using SRWebsocket

I'm using SRWebsocket for socket connection. Now I'm calling socket open function whenever the app enter foreground, But i don't want to do that. I need to check first whether the connection is active or not then only open the websocket. Is there any way to do that?

- (void)connectWebSocket {


if( self.readyState == SR_OPEN){

    NSLog(@"CONNECT%u ",self.readyState);
} else {

    NSLog(@"CLOSED %u",self.readyState);

}





[[IXDataBaseManager sharedNetworkDataManager] deleteOldPolls];


NSString *urlString =@"wss://m.hol.com/testing/api/ws/"; 



if( self.webSocket ) {
    [self.webSocket close];
    self.webSocket.delegate = nil;
    self.webSocket=nil;
}
self.webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] protocols:@[@"hol-json"]];
self.webSocket.delegate = self;
[self.webSocket open];
NSLog(@"CONNECTOPN%u ",self.readyState);

}

self.readyState always return "0"

Upvotes: 3

Views: 1858

Answers (1)

Vijay Masiwal
Vijay Masiwal

Reputation: 1153

May be this sample code help you:

- (void)openSocket {
    if (_webSocket.readyState == SR_CLOSED)
    {
        // _websocket is closed. Open your web socket again
        [_webSocket open];
    } else {
        // _websocket is not closed. check the readyState and perform your task accordingly
    }
}

- (void)forceOpenSocket {
    _webSocket.delegate = nil;
    [_webSocket close];

    _webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"Input Url"]]];
    _webSocket.delegate = self;

    // Opening Connection ...
    [_webSocket open];
}

Upvotes: 1

Related Questions