migration guide form FCS/FMS to red 5 :: 从FCS/FMS迁移到red5的指南
Author: Joachim Bauch tranlater:yapollo.li email:yapollo.li@gmail.com
作者:Joachim Bauch 翻译:yapollo.li
Contents内容介绍:
序文:
这篇文档描述了 fcs/fms与red5之间的API(应用程序接口)的不同,目的在于帮助那些已经存在于FCS/FMS的应用程序迁移到RED5上,如果你还没有点red5经验,请阅读这方面的指南howto create new applications
应用程序回调
在实现服务器端应用程序的时候一个重要的功能就是通告客户端是否链接,以及当应用程序有新的实例创建的时候能够通知该消息。
Red5在接口 IScopeHandler 中指定了这些动作 , 大家可以看它的api文档去进一步了解细节
ApplicationAdapter 类介绍:
因于一次请求中一些方法可能被重复的调用(比如:一旦有新客户端链接产生的时,connect方法就会被调用),所以这个类ApplicationAdapter 中定义了许多附加的方法事件
这个类通常被新的应用程序用作基础类
下面是一个一览表,它显示了FCS/FMS应用程序类和red5中ApplicationAdapter方法的对比
FCS / FMS Red5
onAppStart appStart roomStart
onAppStop appStop roomStop
appConnect roomConnect appJoin roomJoin
onDisconnect appDisconnect roomDisconnect appLeave roomLeave
你也可以使用ApplicationAdapter去核对流媒体对象,共享对象,或者预定义他们。关于进一步的细节可以参考它的api文档
以app做前缀的方法,是在主应用程序中被调用滴,以room做前缀的方法是在应用程序的房间(也就是实例中)被调用
链接方法的执行命令
假设你要链接rtmp://server/app/room1/room2
首先 ,建立连接,那么所有链接到room2的用户都能被全部显示,
-
app (-> appConnect)
-
room1 (-> roomConnect)
-
room2 (-> roomConnect)
在连接被建立后,客户端对象能被取回,并且如果它(指取回的客户端对象)是第一个被客户端连接到这个作用域的,他就加入该作用域
-
app (-> appJoin)
-
room1 (-> roomJoin)
-
room2 (-> roomJoin)
如果在同一作用域内一个用户建立了第二个(或者多余)链接,那么只有这些连接方法被调用,如果你连接到部分相同作用域内,那么只有部分加入方法被调用
比如:连接 rtmp://server/app/room1/room3 将会触发下面的语句
- appConnect("app")
- joinConnect("room1")
- joinConnect("room3")
- roomJoin("room3")
appStart 方法在开启red5服务的时候,当前只能被调用一次,
roomStart 方法在第一个客户端连接到房间的时候被调用
接受,拒绝客户端
FCS/FMS 提供了如acceptConnection 和rejectConnection的方法去接受和拒绝新的客户端。对Red5应用程序,允许客户端连接,没有专门的动作是必须得在这种情况下后缀为Connect的方法只是需要返回true
如果客户端不允许去连接,在ApplicationAdapter 类中的rejectClient方法将会被调用,任何被传递给rejectClient的参数都是有效滴,会被看做状态对象的应用程序的属性从而被回调函数返回
当前的连接和客户端访问
Red5支持两种不同的方法,从被调用函数中访问当前的连接对象,这个连接对象能被用于获取活跃的客户端和他被连接的作用域。第一个使用 Red5 对象
代码如下:
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.Red5;
public void whoami() {
IConnection conn = Red5.getConnectionLocal();
IClient client = conn.getClient();
IScope scope = conn.getScope();
// ...
}
第二种需要这个方法被定义一个IConnection类型的参数,同时当一个客户端调用该方法时第一个参数会被red5自动添加,代码如下:
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
public void whoami(IConnection conn) {
IClient client = conn.getClient();
IScope scope = conn.getScope();
// ...
}
Additional handlers
附加事件的处理
对于许多应用程序而言,已经存在的类包含的应用程序逻辑(指那些和red5不相关的)是必须被重复使用的,为了能对那些通过RTMP连接的客户端有效,这些类需要在Red5中作为事件注册。
当前有两个方法去注册这些事件:
1. 通过配置文件去增加他们
2. 通过手工从应用程序中注册他们
这些事件被客户端调用执行的示例代码如下:
nc = new NetConnection();
nc.connect("rtmp://localhost/myapp");
nc.call("handler.method", nc, "Hello world!");
如果一个事件处理器被请求,Red5总是会在检测配置文件环境中的设置的事件处理器之前先去在客户端的作用域范围内寻找它。
在配置文件中处理事件
这种方法更适用于那些对所有作用域的程序都运行的常见事件
下面是一个事件处理的例子,它的作用是去注册类com.fancycode.red5.HandlerSample
下面的bean 需要加入WEB-INF/red5-web.xml的文件中。
<bean id="sample.service"
class="com.fancycode.red5.HandlerSample"
singleton="true" />
Note that the id of the bean is constructed as the name of the handler (heresample) and the keyword service.
注意这个bean的id 被构建作为处理器程序和关键字服务的名字
在应用程序中用代码注册事件处理
不同作用域的应用程序使用不同的事件处理,如果想去更改它们,就需要在服务端的代码中注册他们。写在服务端的这些事件处理总会覆盖在red5-web.xml中配置的事件。这些已经注册过的必要函数被命名在IServiceHandlerProvider中,当然IServiceHandlerProvider在ApplicationAdapter类中实现哈
如同上面描述的类文件能被用代码注册的例子如下:
public boolean appStart(IScope app) {
if (!super.appStart(scope))
return false;
Object handler = new com.fancycode.red5.HandlerSample();
app.registerServiceHandler("sample", handler);
return true;
}
注意:在这个例子中,只是这个应用程序的作用域有sample处理程序,而不是子作用域,如果想这个处理程序同样在
房间中起作用,必须在房间的作用域内的
分享到:
相关推荐
URLLoader(URLStream) FlashRemoting XMLSocket(Socket) FMS/FCS
系统的主要特点可以从下面三大方面来体现: 一、快速:快速的应用开发和优化的执行速度,更加有利于企业级应用和部署 二、兼容:兼容PHP4和PHP5版本,在PHP4下模拟了很多PHP5的优秀特性 三、简单:简洁的架构和模板...
资源来自github,用于Verilog进行网络通信时的FCS校验码的生成
FCS校验计算器
Flash大家庭里的一员,这个东东以前叫Flash Communication Server,传说中的FCS就是这个,现在改叫FMS了... 不见不知道哦,一见真可怕,adobe还有这么cool的东东,自从见了她,让我做些小东东的兴趣全没了,一心想...
字符串FCS校验码计算方法
欧姆龙plc的 hostlink 的fcs校验工具 http://blog.csdn.net/aliealie/article/details/53930703
两种方式进行异或运算 上面有详细的时间记录
欧姆龙FCS校验器 VB源代码,校验FCS值,可以算出FCS值,直接输入COM口通讯字串代码运算.
FCS Remover.dmg有用有帮助
netbean-5_5_1-ml-fcs-bin-win,j2ee开发平台
一个简单的网络帧FCS计算工具,可移植到自己的项目
输入十进制数字,能够自动转化为二进制数据并进行二进制除法运算,最后生成FCS码,输出到屏幕上。(完全原创----西安电子科技大学信息对抗)
西门子SITRANS FCS400质量流量传感器快速启动手册pdf,西门子SITRANS FCS400质量流量传感器快速启动手册
从 FCS3.0 格式文件中提取数据记录并保存为 CSV 格式文件。 我已经通过使用以下内容确认了该程序的工作: 测试数据 从导出的数据 要求 Python 3.4.x 如何使用 python main.py /path/to/file_or_dir 适用于 ...
流肛门 用于分析流式细胞术 .fcs 文件的程序 开发设置 开发/venv.sh 加载 HP 数据库元信息(示例) ... # 从存档卷制作 FCS db python flowanal.py make_FCSmeta_db '/mnt/hgfs/archive/' --ex 'archive2' 'Dupl
FCS系统总体介绍,幻灯片演示介绍
j2me_cldc-1_1-fcs-src-winunix.rar cldc1.1源码
各FCS子系统相对独立,这并不符合矿山物联网从底层进行信息融合的理念。新桥煤矿对此进行了技术改造,按现场总线具有开放性和互操作性的性能,用FCS实现现场各个控制器和仪表设备互联,提高各子系统间的融合程度,实现了...
FCS-35000-AVATION-TIMER英文版说明书 里面详细的安装过程,完全图方便个人使用