// // LCWebSocketManager.m // LiveChat // // Created by 张灿 on 2018/9/17. // Copyright © 2018年 caicai. All rights reserved. // #import "LCWebSocketManager.h" @implementation LCWebSocketManager - (instancetype)initWithDelegate:(id)delegate serverUrl:(NSString*)url roomId:(NSString*)roomId{ if (self = [super init]) { self.delegate = delegate; self.roomId = roomId; // self.socketServer = [[UCWebSocketSever alloc]init]; [UCWebSocketSever sharedWebSocketServer].serveUrl = url; [UCWebSocketSever sharedWebSocketServer].roomId = roomId; [[UCWebSocketSever sharedWebSocketServer]startConnentWebSocket:0 ];//连接webSocket服务 [UCWebSocketSever sharedWebSocketServer].delegate = self; } return self; } - (void)removeDelegate{ self.delegate = nil; [[UCWebSocketSever sharedWebSocketServer]removeDelegate]; } - (void)stopConnect{ [[UCWebSocketSever sharedWebSocketServer] closeConnectWebSocket]; } - (void)dealloc{ [[NSNotificationCenter defaultCenter]removeObserver:self ]; } //发送消息 - (void)sendData:(NSData*)data{ [[UCWebSocketSever sharedWebSocketServer] sendData:data]; } - (void)sendCancel{//拨打方取消 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"cancel" forKey:@"method"]; [dict setObject:@{@"room_id":self.roomId} forKey:@"data"]; NSData* data = [dict mj_JSONData]; [self sendData:data]; } - (void)sendRefuse{//接受方拒绝 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"refuse" forKey:@"method"]; [dict setObject:@{@"room_id":self.roomId} forKey:@"data"]; NSData* data = [dict mj_JSONData]; [self sendData:data]; } - (void)sendAgree{ NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"agree" forKey:@"method"]; [dict setObject:@{@"room_id":self.roomId} forKey:@"data"]; NSData* data = [dict mj_JSONData]; [self sendData:data]; } - (void)sendHangup{ NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"hangup" forKey:@"method"]; [dict setObject:@{@"room_id":self.roomId} forKey:@"data"]; NSData* data = [dict mj_JSONData]; [self sendData:data]; } // 减免 - (void)discountWithTimerId:(NSString *)timerId{ NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"reducecosts" forKey:@"method"]; [dict setObject:@{@"time_id":timerId,@"room_id":self.roomId} forKey:@"data"]; NSData* data = [dict mj_JSONData]; [self sendData:data]; } - (void)sendChat:(NSInteger)type content:(NSString*)content{ NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"message" forKey:@"method"]; [dict setObject:@{@"txt":content,@"room_id":self.roomId} forKey:@"data"]; NSData* data = [dict mj_JSONData]; [self sendData:data]; } //送礼物 - (void)sendGift:(NSString*)giftId count:(NSInteger)giftCount tyID:(NSString*)gift_type_id{ NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"gift" forKey:@"method"]; [dict setObject:@{@"gift_id":giftId,@"gift_count":@(giftCount),@"room_id":self.roomId,@"gift_type_id":gift_type_id} forKey:@"data"]; NSData* data = [dict mj_JSONData]; [self sendData:data]; } //收到消息 #pragma mark - webSocketDelegate - (void)didRecvMessage:(UCPacketBody *)packet{ NSDictionary* dict = [packet.data mj_JSONObject]; UCSocketParmaModel* param = [UCSocketParmaModel mj_objectWithKeyValues:dict]; if(![param.method isEqualToString:@"cancalltime"]){ NSLog(@"123收到消息 [%@]", dict); } if ([param.code isEqualToString:@"0"]) { if ([param.method isEqualToString:@"request"]) {//主叫方连接成功 if (self.delegate && [self.delegate respondsToSelector:@selector(requestSuccess)]) { [self.delegate requestSuccess]; } }else if ([param.method isEqualToString:@"response"]){//被叫方连接成功 NSLog(@"被叫方连接成功"); if (self.delegate && [self.delegate respondsToSelector:@selector(responseConnent)]) { [self.delegate responseConnent]; } }else if ([param.method isEqualToString:@"updatetip"]){//主叫方更新提示信息 if (self.delegate && [self.delegate respondsToSelector:@selector(responseChoosing:)]) { [self.delegate responseChoosing:[param.data objectForKey:@"tip"]]; } }else if ([param.method isEqualToString:@"startvideo"]){//接通视频通话 if (self.delegate && [self.delegate respondsToSelector:@selector(videoStart:)]) { [self.delegate videoStart:param.data]; } }else if ([param.method isEqualToString:@"notice"]){//文字交互 if (self.delegate && [self.delegate respondsToSelector:@selector(reciveTxt:)]) { [self.delegate reciveTxt:param.data]; } }else if ([param.method isEqualToString:@"hangup"]){//视频通话结束 if (self.delegate && [self.delegate respondsToSelector:@selector(videoEnd:)]) { //v1.1.1 判断挂断消息是否是当前房间 if(self.roomId.integerValue == [[param.data objectForKey:@"roomid"] integerValue]) { [self.delegate videoEnd:[[param.data objectForKey:@"type"]integerValue]]; } } } //add by leo 20191031 剩余通话时长 else if([param.method isEqualToString:@"cancalltime"]) { // NSLog(@"剩余时长为%@\n",param.data); if (self.delegate && [self.delegate respondsToSelector:@selector(canCallTime:)]) { [self.delegate canCallTime:[param.data objectForKey:@"tip"]]; } if (self.delegate && [self.delegate respondsToSelector:@selector(otherBalance:)]) { [self.delegate otherBalance:[[param.data objectForKey:@"account"] integerValue]]; } if (self.delegate && [self.delegate respondsToSelector:@selector(discountWithTime:)]) { [self.delegate discountWithTime:[[param.data objectForKey:@"already_reduce_time"] integerValue]]; } } }else{ if (![param.message isEqualToString:@""]) { [ZCHUDHelper showTitle:param.message]; } } } //add by leo v1.0.8弱网警告 -(void)weakNetWorkWaring { if (self.delegate && [self.delegate respondsToSelector:@selector(autoHangUp)]) { [self.delegate autoHangUp]; } } @end