如何快速的开发一个完整的iOS直播app】(创建房间)
直播(创建房间)
- 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】(创建房间)相关推荐
- 【如何快速的开发一个完整的iOS直播app】(美颜篇)
前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主要讲 ...
- 【如何快速的开发一个完整的iOS直播app】(采集篇)
前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,首先需要采集主播的视频和音频,然后传入流媒体服务器,本篇主要讲解如何采 ...
- 如何快速的开发一个完整的iOS直播app(美颜篇)
1.前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主 ...
- (转)【如何快速的开发一个完整的iOS直播app】(原理篇)
原文链接:https://www.jianshu.com/p/bd42bacbe4cc [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](原理篇) ...
- 如何快速的开发一个完整的iOS直播app(原理篇)
本文转自袁峥Seemygo的博客分享.觉得很不错.特意粘来给大家分享. 1.一个完整直播app功能(来自落影loyinglin分享) 1.聊天 私聊.聊天室.点亮.推送.黑名单等; 2.礼物 普通礼物 ...
- 如何快速的开发一个完整的iOS直播app(播放篇)
前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流 ...
- 【如何快速的开发一个完整的iOS直播app】(播放篇)
前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流 ...
- 如何快速开发一个完整的ios直播app
如何快速开发一个完整的iOS直播app 一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形 ...
- 【如何快速的开发一个简单的iOS直播app】(代码篇)
开篇([如何快速的开发一个完整的iOS直播app](原理篇) ) 好久没写简书,因为好奇的我跑去学习直播了,今天就分享一下我的感慨. 目前为止直播还是比较热点的技术的,简书,git上有几篇阅读量和含金 ...
最新文章
- vscode php调试插件,构建VSCode开发调试环境(强大且实用的插件推荐)
- 解压zip_康巴汉子“型男”zip,点击解压
- push to origin/master was rejected错误解决方案(IDEA)
- 网站的高性能架构---存储性能优化
- 【特征工程】(未完成)编码
- 五分钟了解Mysql的行级锁——《深究Mysql锁》
- 阿丽塔大脑是机器人哪_阿丽塔——和机器人结合的未来离我们有多远?
- 水滴直播风波背后:事关隐私的恐慌和“委屈”的周鸿祎
- 编程初学者必须知道的十件事
- 数据bag中的激光雷达数据和相机数据分割出来
- 【转载】python中strip(),lstrip(),rstrip()函数的区别
- 软件开发过程与项目管理(9.软件项目配置管理计划)
- APUE实战篇1:在Ubuntu环境搭载apue的环境
- 不会安装Lomboz?直接下载eclipse JEE吧。
- ROS_Noetic使用handeye-calib进行机械臂手眼标定
- 2022-2028全球及中国薪酬管理系统行业研究及十四五规划分析报告
- 记录一个非常实用的gif制作工具licecap
- 坚果PRO3搭载Android,安卓 10 来了,坚果 Pro 3 推送 Smartisan OS v7.5.0 早期众测版
- c语言安徽省考试成绩查询,2021安徽省考报名入口_安徽省考成绩查询
- [IJCAI2016]Makeup Like a Superstar: Deep Localized Makeup Transfer Network
热门文章
- Financial Time Series Segmentation Based On Turning Points
- matlab工具包pls,PLS_Toolbox21 一个包含常用PLS的matlab工具包 - 下载 - 搜珍网
- 管理故事216之022-好团队应是学习型团队
- 实现kep与数据库连接,在kep上修改数据库
- whisper 强大且开源的语音转文字
- k8s集群部署——Pod管理和资源清单
- 医疗信息系统等保定级备案教程
- python编程单词排序_Python-按字母顺序排列单词
- 前序遍历m-ary树_在Ruby中使用ary [index]- object进行数组元素分配
- java license 开源_MinIO:一个基于Apache License v2.0开源协议的对象存储服务