| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- //
- // SocketServiceHandler.m
- // OneCable
- //
- // Created by KaRam Kim on 2017. 2. 17..
- // Copyright © 2017년 ntels. All rights reserved.
- //
- #import "SocketServiceHandler.h"
- #import <SocketRocket/SRWebSocket.h>
- #import "Definitions.h"
- @interface SocketServiceHandler() <SRWebSocketDelegate>
- {
- SRWebSocket *_socket;
- }
- @end
- @implementation SocketServiceHandler
- + (id)sharedManager
- {
- static SocketServiceHandler *sharedSocketServiceHandler = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedSocketServiceHandler = [[self alloc] init];
- });
- return sharedSocketServiceHandler;
- }
- - (id) init
- {
- self = [super init];
-
- if (self) {
-
- _isConnected = NO;
- _strSocketURL = kSocketServer;
-
- _socket = [[SRWebSocket alloc] initWithURL:[NSURL URLWithString:_strSocketURL]];
- _socket.delegate = self;
-
- [self socketOpen];
- }
-
- return self;
- }
- - (void) initWithDelegate:(id<SocketServiceHandlerDelegate>) delegate
- {
- [self setDelegate:delegate];
- }
- - (void) socketOpen
- {
- NSLog(@"socketOpen");
-
- if( _socket != nil )
- [_socket open];
- else
- {
- _socket = [[SRWebSocket alloc] initWithURL:[NSURL URLWithString:_strSocketURL]];
- _socket.delegate = self;
-
- [_socket open];
- }
- }
- - (void) connect
- {
- if( !_isConnected )
- {
- NSString* token = @"";
-
- // if( ![[[APUserDefaultManager sharedManager] getUserDefault:UDKEY_TOKEN] isEqualToString:@""] )
- // token = [[APUserDefaultManager sharedManager] getUserDefault:UDKEY_TOKEN];
-
- NSData * jsonData = [NSJSONSerialization dataWithJSONObject:@{@"token":token} options:0 error:nil];
- NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
- NSLog(@"%@ : %ld" ,myString, (long)_socket.readyState);
-
- if( _socket.readyState == SR_OPEN )
- {
- [_socket send:myString];
- _isConnected = YES;
- }
- else if ( _socket.readyState == SR_CLOSED || _socket.readyState == SR_CLOSING )
- {
- [self disconnect];
- _socket = nil;
- [self socketOpen];
- }
- }
- }
- - (void) disconnect
- {
- if( _isConnected )
- {
- [_socket close];
- _socket = nil;
- }
- }
- #pragma mark - SRWebSocketDelegate
- - (void)webSocketDidOpen:(SRWebSocket *)webSocket
- {
- NSLog(@"SOCKET didOpen");
- }
- - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message
- {
- NSLog(@"SOCKET didReceiveMessage : %@", message);
-
- NSString *errString = @"";
-
- if( message == nil || [message isEqualToString:@""] )
- errString = @"message empty";
- else
- {
- if( [message isKindOfClass:[NSString class]] )
- {
- NSError* error = nil;
- NSDictionary *jsonObj = [NSJSONSerialization JSONObjectWithData:[message dataUsingEncoding:NSUTF8StringEncoding]
- options:NSJSONReadingMutableContainers
- error:&error];
-
- if (error != nil) {
- NSLog(@"NSJSONSerialization JSONObject error: %@", [error localizedDescription]);
- return;
- }
-
- NSInteger msgType = [jsonObj[@"type"] integerValue];
-
- if ( msgType == 0 ) {
-
- }
- else
- {
- NSLog(@"msgType : %i",(int)msgType);
-
- }
- }
- }
- }
- - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error
- {
- NSLog(@"WebSocket error: %@", error);
-
- _isConnected = NO;
- [_socket close];
- _socket = nil;
- [self socketOpen];
- }
- - (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload
- {
- NSLog(@"WebSocket Receive Pong: %@", pongPayload);
- }
- - (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean
- {
- NSLog(@"WebSocket closed with code: %ld reason:%@ wasClean:%d",
- (long)code, reason, wasClean);
-
- _isConnected = NO;
- [_socket close];
- _socket = nil;
- [self socketOpen];
- }
- @end
|