LCWebSocketManager.m 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. //
  2. // LCWebSocketManager.m
  3. // LiveChat
  4. //
  5. // Created by 张灿 on 2018/9/17.
  6. // Copyright © 2018年 caicai. All rights reserved.
  7. //
  8. #import "LCWebSocketManager.h"
  9. @implementation LCWebSocketManager
  10. - (instancetype)initWithDelegate:(id)delegate serverUrl:(NSString*)url roomId:(NSString*)roomId{
  11. if (self = [super init]) {
  12. self.delegate = delegate;
  13. self.roomId = roomId;
  14. // self.socketServer = [[UCWebSocketSever alloc]init];
  15. [UCWebSocketSever sharedWebSocketServer].serveUrl = url;
  16. [UCWebSocketSever sharedWebSocketServer].roomId = roomId;
  17. [[UCWebSocketSever sharedWebSocketServer]startConnentWebSocket:0 ];//连接webSocket服务
  18. [UCWebSocketSever sharedWebSocketServer].delegate = self;
  19. }
  20. return self;
  21. }
  22. - (void)removeDelegate{
  23. self.delegate = nil;
  24. [[UCWebSocketSever sharedWebSocketServer]removeDelegate];
  25. }
  26. - (void)stopConnect{
  27. [[UCWebSocketSever sharedWebSocketServer] closeConnectWebSocket];
  28. }
  29. - (void)dealloc{
  30. [[NSNotificationCenter defaultCenter]removeObserver:self ];
  31. }
  32. //发送消息
  33. - (void)sendData:(NSData*)data{
  34. [[UCWebSocketSever sharedWebSocketServer] sendData:data];
  35. }
  36. - (void)sendCancel{//拨打方取消
  37. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  38. [dict setObject:@"cancel" forKey:@"method"];
  39. [dict setObject:@{@"room_id":self.roomId} forKey:@"data"];
  40. NSData* data = [dict mj_JSONData];
  41. [self sendData:data];
  42. }
  43. - (void)sendRefuse{//接受方拒绝
  44. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  45. [dict setObject:@"refuse" forKey:@"method"];
  46. [dict setObject:@{@"room_id":self.roomId} forKey:@"data"];
  47. NSData* data = [dict mj_JSONData];
  48. [self sendData:data];
  49. }
  50. - (void)sendAgree{
  51. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  52. [dict setObject:@"agree" forKey:@"method"];
  53. [dict setObject:@{@"room_id":self.roomId} forKey:@"data"];
  54. NSData* data = [dict mj_JSONData];
  55. [self sendData:data];
  56. }
  57. - (void)sendHangup{
  58. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  59. [dict setObject:@"hangup" forKey:@"method"];
  60. [dict setObject:@{@"room_id":self.roomId} forKey:@"data"];
  61. NSData* data = [dict mj_JSONData];
  62. [self sendData:data];
  63. }
  64. // 减免
  65. - (void)discountWithTimerId:(NSString *)timerId{
  66. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  67. [dict setObject:@"reducecosts" forKey:@"method"];
  68. [dict setObject:@{@"time_id":timerId,@"room_id":self.roomId} forKey:@"data"];
  69. NSData* data = [dict mj_JSONData];
  70. [self sendData:data];
  71. }
  72. - (void)sendChat:(NSInteger)type content:(NSString*)content{
  73. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  74. [dict setObject:@"message" forKey:@"method"];
  75. [dict setObject:@{@"txt":content,@"room_id":self.roomId} forKey:@"data"];
  76. NSData* data = [dict mj_JSONData];
  77. [self sendData:data];
  78. }
  79. //送礼物
  80. - (void)sendGift:(NSString*)giftId count:(NSInteger)giftCount tyID:(NSString*)gift_type_id{
  81. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  82. [dict setObject:@"gift" forKey:@"method"];
  83. [dict setObject:@{@"gift_id":giftId,@"gift_count":@(giftCount),@"room_id":self.roomId,@"gift_type_id":gift_type_id} forKey:@"data"];
  84. NSData* data = [dict mj_JSONData];
  85. [self sendData:data];
  86. }
  87. //收到消息
  88. #pragma mark - webSocketDelegate
  89. - (void)didRecvMessage:(UCPacketBody *)packet{
  90. NSDictionary* dict = [packet.data mj_JSONObject];
  91. UCSocketParmaModel* param = [UCSocketParmaModel mj_objectWithKeyValues:dict];
  92. if(![param.method isEqualToString:@"cancalltime"]){
  93. NSLog(@"123收到消息 [%@]", dict);
  94. }
  95. if ([param.code isEqualToString:@"0"]) {
  96. if ([param.method isEqualToString:@"request"]) {//主叫方连接成功
  97. if (self.delegate && [self.delegate respondsToSelector:@selector(requestSuccess)]) {
  98. [self.delegate requestSuccess];
  99. }
  100. }else if ([param.method isEqualToString:@"response"]){//被叫方连接成功
  101. NSLog(@"被叫方连接成功");
  102. if (self.delegate && [self.delegate respondsToSelector:@selector(responseConnent)]) {
  103. [self.delegate responseConnent];
  104. }
  105. }else if ([param.method isEqualToString:@"updatetip"]){//主叫方更新提示信息
  106. if (self.delegate && [self.delegate respondsToSelector:@selector(responseChoosing:)]) {
  107. [self.delegate responseChoosing:[param.data objectForKey:@"tip"]];
  108. }
  109. }else if ([param.method isEqualToString:@"startvideo"]){//接通视频通话
  110. if (self.delegate && [self.delegate respondsToSelector:@selector(videoStart:)]) {
  111. [self.delegate videoStart:param.data];
  112. }
  113. }else if ([param.method isEqualToString:@"notice"]){//文字交互
  114. if (self.delegate && [self.delegate respondsToSelector:@selector(reciveTxt:)]) {
  115. [self.delegate reciveTxt:param.data];
  116. }
  117. }else if ([param.method isEqualToString:@"hangup"]){//视频通话结束
  118. if (self.delegate && [self.delegate respondsToSelector:@selector(videoEnd:)]) {
  119. //v1.1.1 判断挂断消息是否是当前房间
  120. if(self.roomId.integerValue == [[param.data objectForKey:@"roomid"] integerValue])
  121. {
  122. [self.delegate videoEnd:[[param.data objectForKey:@"type"]integerValue]];
  123. }
  124. }
  125. }
  126. //add by leo 20191031 剩余通话时长
  127. else if([param.method isEqualToString:@"cancalltime"])
  128. {
  129. // NSLog(@"剩余时长为%@\n",param.data);
  130. if (self.delegate && [self.delegate respondsToSelector:@selector(canCallTime:)]) {
  131. [self.delegate canCallTime:[param.data objectForKey:@"tip"]];
  132. }
  133. if (self.delegate && [self.delegate respondsToSelector:@selector(otherBalance:)]) {
  134. [self.delegate otherBalance:[[param.data objectForKey:@"account"] integerValue]];
  135. }
  136. if (self.delegate && [self.delegate respondsToSelector:@selector(discountWithTime:)]) {
  137. [self.delegate discountWithTime:[[param.data objectForKey:@"already_reduce_time"] integerValue]];
  138. }
  139. }
  140. }else{
  141. if (![param.message isEqualToString:@""]) {
  142. [ZCHUDHelper showTitle:param.message];
  143. }
  144. }
  145. }
  146. //add by leo v1.0.8弱网警告
  147. -(void)weakNetWorkWaring
  148. {
  149. if (self.delegate && [self.delegate respondsToSelector:@selector(autoHangUp)]) {
  150. [self.delegate autoHangUp];
  151. }
  152. }
  153. @end