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包,解压到你 ...
随机推荐
- zlib压缩解压示例
#include <stdio.h> #include <string.h> #include <assert.h> #include "zlib.h&q ...
- nodejs -mysql模块链接数据库创建库创建表单。
var mysql = require('mysql'); var connection= mysql.createConnection({ host:'localhost', user:'root' ...
- ASP.NET MVC5 easyui 之 treegrid 初用记录
菜鸟初次使用,参考论坛中介绍的方法仍走了一些弯路,把自己遇到的问题记录下来. 1.必须定义根节点: 2.根节点一个或多个均可: 4.根节点的父节点属性不必定义,或者定义为0: 5.各级子节点的父节点属 ...
- js生成随机字符串或者随机数
//返回一个指定范围内的随机数 function createRandomNum(Min,Max){ let Range = Max - Min; let Rand = Math.random(); ...
- jQuery插件综合应用(四)头像设置
一.操作流程 会员点击头像设置,弹出一个层,在层中,有上传图片的按钮,用户点击按钮上传图片,图片在服务器端按大小压缩保存(方便剪切).保存后,在前端显示,然后用户可修剪图片.选择图片区域,点击提交,保 ...
- php 商务网站购物车联动地址
数据表如下: CREATE TABLE IF NOT EXISTS `china` (`region_id` smallint(5) unsigned NOT NULL, `parent_id` s ...
- jquery 放大图片
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 禁止选择文本和禁用右键 v2.0
禁止鼠标右键(注:在火狐浏览器没有起到效果作用) <script> function stop() { return false }; document.oncontextmenu = s ...
- ubuntu下php开发环境搭建,nginx+(cgi)php5fpm+memcached+xdebug
由于只是开发环境,所以都是选择比较简单的apt-get安装方式 ,但中间也遇到一点问题. 首先安装nginx nginx的安装和配置其实很简单,nginx本身非常轻量级, 直接 sudo apt-ge ...
- php远程读取json的方法
<?php /** * @author 懒人 <service@kuitao8.com> * @since 2.0 */ header("Content-type:text ...