如何快速的开发一个完整的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) {   

     [SVProgressHUDshowImage:nilstatus:@"请输出房间名称"];        [SVProgressHUDsetDefaultStyle:SVProgressHUDStyleLight];

return;  

  }

// 创建房间

NSString *roomName = _textField.text;    

XMGRoomItem *item = [XMGRoomItemitemWithName:roomName];

// 创建房间

[[SocketIOClient clientSocket]emit:@"createRoom"with:@[item.mj_keyValues]];

}

- (void)viewDidLoad {    

[superviewDidLoad];// Do any additional setup after loading the view.

UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImageimageNamed:@"blur"]];    imageView.frame = self.view.bounds;  

  [_preViewaddSubview:imageView];

// 监听创建房间是否成功

[[SocketIOClient clientSocket]on:@"createRoomResult"callback:^(NSArray * _Nonnull data, SocketAckEmitter * _Nonnull ack) {  

      BOOL success = [data[0] boolValue];

if(success) {

// 进入主播界面,移除高斯模糊

[_blurView removeFromSuperview];    

    }else{

// 清空文本框_textField.text = @"";

// 提示重新输入

[SVProgressHUDshowImage:nilstatus:@"房间同名,请重新输入房间名称"];     

   }  

  }];

}

创建房间服务端代码

1.每开启一个房间,服务端开启一个socket分组,应该搭建WebSocket服务器

2.服务器代码

3.连接成功后,监听创建房间

1.判断房间名是否重复,使用underScore框架,操作数组,需要用npm下载

2.没有重名,就执行下面操作3,4,5

发送创建房间成功事件,通知客户端

3.保存房间

4.添加socket分组

5.记录当前socket正在直播的房间,一个主播只会开启一个房间,当主播关闭的时候,需要把当前房间移除.

// 监听创建房间

clientSocket.on('createRoom',function(data){

// 判断房间名是否一样

varroomNameArr =Object.keys(rooms).map(function(roomKey){returnrooms[roomKey];  

      })

// 获取结果

varcreateRoomResult = 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) {

deleterooms[roomKey];      

      clientSocket.leave(roomKey);    

    }

    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值