Red5 项目的流事件回调流程和注意事项
回调流程
参考:Red5的一般客户端连接各个事件的触发顺序,经验证实际过程如下:
程序开始(在RED5启动的时候会自动去启动APP,从而触发以上事件)
Start:MyChatRoom
appStart:MyChatRoom
第一个客户端连接(MyChatRoom/lobby/roomA)
Start:/lobby
roomStart:/lobby
Start:/lobby/roomA
roomStart:/lobby/roomA
appConnect:0
connect
appJoin:0:
roomConnect:0
connect:/lobby
roomJoin:0:/lobby
roomConnect:0
connect:/lobby/roomA
roomJoin:0:/lobby/roomA
第二个客户端连接
appConnect:1
connect
appJoin:1:
roomConnect:1
connect:/lobby
roomJoin:1:/lobby
roomConnect:1
connect:/lobby/roomA
roomJoin:1:/lobby/roomA
第二个客户端离开
roomDisconnect:1
disconnect:/lobby/roomA
roomLeave:1:/lobby/
roomAroomDisconnect:1
disconnect:/lobby
roomLeave:1:/lobby
appDisconnect:1
disconnect:
appLeave:1:
第一个客户端离开
roomDisconnect:0
disconnect:/lobby/roomA
roomLeave:0:/lobby/roomA
stop:/lobby/roomA
roomStop:/lobby/roomA
roomDisconnect:0
disconnect:/lobby
roomLeave:0:/lobby
stop:/lobby
roomStop:/lobby
appDisconnect
disconnect:
appLeave:0:
程序退出
stop
appStop:
注意事项
1. 在我第一次测试时,我继承的Adapter实现了connect、appConnect、roomConnect三个方法。发现无论何时,程序只会回调connect而不会回调另外两个。查看connect的代码和注释发现若要区分地调用appConnet和roomConnect,就不需要实现connect函数,仅实现后两者就够了。否则,Red5只会调用connect,而传入的参数scope中有区别。
对disconnect、appDisconnect、roomDisconnect同理。
需要强调这一点有些重要。因为我在使用Red5的挑战认证(CRAM)例子的时候,发现当我在appStart中把例子作为listener注册到我的应用里面,应用程序根本不会回调例子的appConnect,解决方法就是这一点。应用程序把事件分发给了connect而不是appConnect。
还要说的是,如果我们把CRAM的例子改为connect而不是appConnect,那可能需要对scope做一些区别。只有scope的值为app name的时候才执行例子中的代码。否则可能会多次执行认证过程。(未验证)
2. 我的程序中测试结果跟参考的博文在start和appStart、stop和appStop上的调用顺序有所差异,原因是什么暂时不了解。先记录下面线索:
- 执行线程是一直的,如日志
[WARN] [Red5_Scheduler_Worker-10] org.red5.core.Application - stop scope Name: test
[WARN] [Red5_Scheduler_Worker-10] org.red5.core.Application - roomStop - 我继承的父类是MultiThreadApplicationAdapter,被我参考的博文使用的是ApplicationAdapter
- 版本号可能不一样,我使用1.0.5,对方使用的版本未知,看其发文的时间显然应该是比我早得多。
Red5 项目的流事件回调流程和注意事项的更多相关文章
- MQTT事件回调流程
TLS 如下强调: 1.每个IOT设备应该有一对独有的公钥/私钥 2.SERVER的认证通过SERVER的"root certificate" SSL产生过程: $ openssl ...
- Android Multimedia框架总结(十二)CodeC部分之OMXCodec与OMX事件回调流程
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629449 前言:上篇文中分析 ...
- Android按键事件传递流程(二)
5 应用层如何从Framework层接收按键事件 由3.2和4.5.4节可知,当InputDispatcher通过服务端管道向socket文件描述符发送消息后,epoll机制监听到了I/O事件, ...
- 细说javascripe事件传播流程
当我们使用js时,经常会遇到事件传播流程的问题,下面我说一下我的观点. 在js触发某个事件时会相应生成一个事件对象,而这个事件对象则会根据DOM事件流的方向进传递,而传递的顺序如下图所示: 事件对象会 ...
- ZT ANDROID jni 中的事件回调机制JNIenv的使用 2012-09-10 12:53:01
ANDROID jni 中的事件回调机制JNIenv的使用 2012-09-10 12:53:01 分类: 嵌入式 android framework 里java调用native,使用JNI机制,ja ...
- 「SAP技术」A项目关联公司间退货STO流程
[SAP技术]A项目关联公司间退货STO流程 1)创建公司间退货STO单据. 如下图示的公司间退货STO 4500000572, 2),VL10B, 创建交货单. 如下图交货单号:80044918, ...
- JS中的事件传播流程
JS中的事件传播流程 1,Javascript与HTML之间的交互是通过事件实现的. 事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间. 可以使用侦听器来预定事件,以便事件发生时执行相应代码. 2 ...
- 用block做事件回调来简化代码,提高开发效率
我们在自定义view的时候,通常要考虑view的封装复用,所以如何把view的事件回调给Controller就是个需要好好考虑的问题, 一般来说,可选的方式主要有target-action和de ...
- Red5 1.0.0RC1 集成到tomcat6.0.35中运行&部署新的red5项目到tomcat中
1.下载red5-war-1.0-RC1.zip 解压之得到 ROOT.war 文件. 2.处理tomcat. 下载apache-tomcat-6.0.35-windows-x86.zip包,解压到你 ...
随机推荐
- Android学习5—布局简介
Android界面的布局主要有四种,分别为RelativeLayout.LinearLayout.TableLayout.FrameLayout,接下来分别介绍这些布局如何使用(为了简单起见,接下来的 ...
- Xshell配色方案
几个比较喜欢的Xshell配色方案,备份记录下 [Names] count=1 name0=SolarizedDark [SolarizedDark] text(bold)=839496 magent ...
- 常见排序算法(PHP实现)
function InsertSort($arr){ $num = count($arr); for($i = 1; $i < $num; $i++){ $key = $arr[$i]; for ...
- 定时工作方式2实现1s定时
定时器的几种工作方式中,除0和前面的1类似都需要初始化计数值,然后开始计数,计数溢出后,需要再次控制计数的初值,但工作模式2不同于此,工作方式2将THx和TLx分开处理,将初值存放在THx中,计数时只 ...
- TDirectory.Delete 创建删除目录简单示例
使用函数: 1.System.IOUtils.TDirectory.CreateDirectory//创建目录 2.System.IOUtils.TDirectory.Exists // ...
- C# 中经常用到的HTTP请求类,已封装get,post,delete,put
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- iphone 屏幕投射到Mac上
在实际的工作中,我们往往需要演示iPhone上面的程序,但是由于手机屏幕太小,无法同时给很多人看,这时候就需要进行屏幕投射.目前我需要实现的是投射到Mac上.我使用有线USB和无线Airplay两种方 ...
- 定位 - CoreLocation - 区域报警
#import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...
- 用19种编程语言写Hello World
用19种编程语言写Hello World 转载自:http://www.admin10000.com/document/394.html Hello World 程序是每一种编程语言最基本的程序,通常 ...
- hdu 4714
一个树形dp的题,又是一个涉及不深的领域 = =: 不过在网上看到了大神用很巧的思路解决了这个题: 大神的思路就是: 从树的底部往上看:如果一棵子树拥有两个及以上的叶子节点,可以将这棵子树与大树分离 ...