Reputation: 1818
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
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