直播(创建房间)

  • 1.进入主播界面,首先创建房间
  • 2.设计房间模型(key,名称),key作为房间的唯一标识,用来找到房间
  • 3.用socket创建房间,导入socket.io框架
  • 4.一般一个客户端一个socket就好了,可以搞个全局的socket
  • 5.客户端代码(需要封装) 1.一个获取全局的socket 2.一个连接方法封装
  • 6.可以在程序一启动的时候,就建立socket连接
  • 7.每次点击创建房间,直接发送请求就好了
  • 8.监听创建房间是否成功,因为有时候会重名

创建房间客户端代码

    AppDelegate.m[[SocketIOClient clientSocket] connectWithSuccess:^{NSLog(@"建议连接成功");// 创建房间[[SocketIOClient clientSocket] emit:@"createRoom" with:@[item.mj_keyValues]];}];XMGBroadcasterViewController.m- (IBAction)createRoom:(id)sender {// 获取房间名称if (_textField.text.length == 0) {[SVProgressHUD showImage:nil status:@"请输出房间名称"];[SVProgressHUD setDefaultStyle:SVProgressHUDStyleLight];return;}// 创建房间NSString *roomName = _textField.text;XMGRoomItem *item = [XMGRoomItem itemWithName:roomName];// 创建房间[[SocketIOClient clientSocket] emit:@"createRoom" with:@[item.mj_keyValues]];}- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"blur"]];imageView.frame = self.view.bounds;[_preView addSubview:imageView];// 监听创建房间是否成功[[SocketIOClient clientSocket] on:@"createRoomResult" callback:^(NSArray * _Nonnull data, SocketAckEmitter * _Nonnull ack) {BOOL success = [data[0] boolValue];if (success) {// 进入主播界面,移除高斯模糊[_blurView removeFromSuperview];} else {// 清空文本框_textField.text = @"";// 提示重新输入[SVProgressHUD showImage:nil status:@"房间同名,请重新输入房间名称"];}}];}

创建房间服务端代码

  • 1.每开启一个房间,服务端开启一个socket分组,应该搭建WebSocket服务器
  • 2.服务器代码
  • 3.连接成功后,监听创建房间
    • 1.判断房间名是否重复,使用underScore框架,操作数组,需要用npm下载
    • 2.没有重名,就执行下面操作3,4,5
      • 发送创建房间成功事件,通知客户端
    • 3.保存房间
    • 4.添加socket分组
    • 5.记录当前socket正在直播的房间,一个主播只会开启一个房间,当主播关闭的时候,需要把当前房间移除.
 // 监听创建房间clientSocket.on('createRoom',function(data){// 判断房间名是否一样var roomNameArr = Object.keys(rooms).map(function(roomKey){return rooms[roomKey];})// 获取结果var createRoomResult = underscore.contains(roomNameArr,data.roomName);// 发送结果给客户端serverSocket.emit('createRoomResult',!createRoomResult);if(createRoomResult == false){console.log('创建新的房间');// 之前没有包含房间,可以创建新的房间clientSocket.roomKey = rooms[data.roomKey];// 保存房间rooms[data.roomKey] = data.roomName;// 分组
  • 9.监听失去连接,需要把当前主播房间移除,分组也移除,因为表示当前主播不播了
 // 失去连接// 失去连接clientSocket.on('disconnect',function(){// 清空当前房间if(clientSocket.roomKey) {delete rooms[roomKey];clientSocket.leave(roomKey);}});

作者:袁峥
链接:https://www.jianshu.com/p/7f15bbb679b9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如何快速的开发一个完整的iOS直播app】(创建房间)相关推荐

  1. 【如何快速的开发一个完整的iOS直播app】(美颜篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主要讲 ...

  2. 【如何快速的开发一个完整的iOS直播app】(采集篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,首先需要采集主播的视频和音频,然后传入流媒体服务器,本篇主要讲解如何采 ...

  3. 如何快速的开发一个完整的iOS直播app(美颜篇)

    1.前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主 ...

  4. (转)【如何快速的开发一个完整的iOS直播app】(原理篇)

    原文链接:https://www.jianshu.com/p/bd42bacbe4cc [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](原理篇) ...

  5. 如何快速的开发一个完整的iOS直播app(原理篇)

    本文转自袁峥Seemygo的博客分享.觉得很不错.特意粘来给大家分享. 1.一个完整直播app功能(来自落影loyinglin分享) 1.聊天 私聊.聊天室.点亮.推送.黑名单等; 2.礼物 普通礼物 ...

  6. 如何快速的开发一个完整的iOS直播app(播放篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流 ...

  7. 【如何快速的开发一个完整的iOS直播app】(播放篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流 ...

  8. 如何快速开发一个完整的ios直播app

    如何快速开发一个完整的iOS直播app 一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形 ...

  9. 【如何快速的开发一个简单的iOS直播app】(代码篇)

    开篇([如何快速的开发一个完整的iOS直播app](原理篇) ) 好久没写简书,因为好奇的我跑去学习直播了,今天就分享一下我的感慨. 目前为止直播还是比较热点的技术的,简书,git上有几篇阅读量和含金 ...

最新文章

  1. vscode php调试插件,构建VSCode开发调试环境(强大且实用的插件推荐)
  2. 解压zip_康巴汉子“型男”zip,点击解压
  3. push to origin/master was rejected错误解决方案(IDEA)
  4. 网站的高性能架构---存储性能优化
  5. 【特征工程】(未完成)编码
  6. 五分钟了解Mysql的行级锁——《深究Mysql锁》
  7. 阿丽塔大脑是机器人哪_阿丽塔——和机器人结合的未来离我们有多远?
  8. 水滴直播风波背后:事关隐私的恐慌和“委屈”的周鸿祎
  9. 编程初学者必须知道的十件事
  10. 数据bag中的激光雷达数据和相机数据分割出来
  11. 【转载】python中strip(),lstrip(),rstrip()函数的区别
  12. 软件开发过程与项目管理(9.软件项目配置管理计划)
  13. APUE实战篇1:在Ubuntu环境搭载apue的环境
  14. 不会安装Lomboz?直接下载eclipse JEE吧。
  15. ROS_Noetic使用handeye-calib进行机械臂手眼标定
  16. 2022-2028全球及中国薪酬管理系统行业研究及十四五规划分析报告
  17. 记录一个非常实用的gif制作工具licecap
  18. 坚果PRO3搭载Android,安卓 10 来了,坚果 Pro 3 推送 Smartisan OS v7.5.0 早期众测版
  19. c语言安徽省考试成绩查询,2021安徽省考报名入口_安徽省考成绩查询
  20. [IJCAI2016]Makeup Like a Superstar: Deep Localized Makeup Transfer Network

热门文章

  1. Financial Time Series Segmentation Based On Turning Points
  2. matlab工具包pls,PLS_Toolbox21 一个包含常用PLS的matlab工具包 - 下载 - 搜珍网
  3. 管理故事216之022-好团队应是学习型团队
  4. 实现kep与数据库连接,在kep上修改数据库
  5. whisper 强大且开源的语音转文字
  6. k8s集群部署——Pod管理和资源清单
  7. 医疗信息系统等保定级备案教程
  8. python编程单词排序_Python-按字母顺序排列单词
  9. 前序遍历m-ary树_在Ruby中使用ary [index]- object进行数组元素分配
  10. java license 开源_MinIO:一个基于Apache License v2.0开源协议的对象存储服务