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处理程序,而不是子作用域,如果想这个处理程序同样在
房间中起作用,必须在房间的作用域内的
分享到:
相关推荐
- FMS(Flash Media Server)和FCS(Flash Communication Server)是Adobe提供的服务器产品,用于流媒体和实时交互。 - 它们支持视频流、音频流以及使用AMF进行的高级数据通信,如FlashRemoting。 - FMS/FCS可以...
标题中的“基于Verilog的FCS校验”指的是在Verilog硬件描述语言中实现帧校验序列(FCS)的功能,常用于网络通信中的错误检测。FCS是数据链路层(如Ethernet协议)的一个重要组成部分,通过计算数据包的校验和来检测...
在IT行业中,FCS(帧校验序列)是一种常见的数据通信错误检测机制,它用于确保数据在传输过程中没有发生错误。FCS通常采用循环冗余校验(CRC)或者其他校验算法来实现。在这个场景中,我们关注的是C#语言中实现FCS...
在实际应用中,当数据帧通过网络发送时,接收端会使用相同的CRC算法对接收到的数据进行校验,如果计算出的FCS与数据帧尾部携带的FCS不一致,就说明数据在传输过程中可能发生了错误,此时接收方可以拒绝错误的数据包...
1. **数据完整性**:FCS校验确保了数据在传输过程中不受干扰,避免因错误导致的设备控制失误。 2. **提高效率**:及时发现并纠正错误可以减少不必要的通信重试,提高系统的运行效率。 3. **简化调试**:在开发和调试...
#### 七、基于FMS/FCS的多人涂鸦系统 FMS不仅仅限于视频和音频通信,还可以支持更为创意的应用,如多人在线涂鸦系统。此类系统要求服务器能够处理多个用户的输入,并实时更新给所有参与者,实现协同创作的效果。这...
FCS校验计算器
系统的主要特点可以从下面三大方面来体现: 一、快速:快速的应用开发和优化的执行速度,更加有利于企业级应用和部署 二、兼容:兼容PHP4和PHP5版本,在PHP4下模拟了很多PHP5的优秀特性 三、简单:简洁的架构和模板...
在IT行业中,FCS(帧校验序列,Frame Check Sequence)是一种常见的数据通信错误检测机制,主要用于确保数据在传输过程中的完整性。FCS通常通过计算校验和来完成这一任务,其中CRC(Cyclic Redundancy Check,循环...
1. **文本关键字-值对**:FCS3.0引入了描述实验详细信息的文本关键字-值对,使得数据文件包含了更多的元数据,如信号处理方法、仪器信息、样本详情等。这种增强的数据描述能力适应了复杂实验环境的需求,使得数据的...
1. **FCS计算算法实现**:这部分代码将执行特定的FCS计算,可能是CRC(Cyclic Redundancy Check)或其他类似的校验方法。CRC是一种广泛使用的错误检测技术,它通过除法运算生成一个检查码,用于验证数据的完整性和...
5. 将FCS附加到原始数据帧的末尾。 6. 在接收方,接收数据帧并加上FCS,再使用相同的生成多项式进行模二除法。 7. 如果余数为零,说明传输过程中数据未出错。 文章强调了本文对于理解CRC校验的独到之处,认为只要...
Flash大家庭里的一员,这个东东以前叫Flash Communication Server,传说中的FCS就是这个,现在改叫FMS了... 不见不知道哦,一见真可怕,adobe还有这么cool的东东,自从见了她,让我做些小东东的兴趣全没了,一心想...
远程系统版本包括带M12的远程装置、SITRANS FCS400传感器、带有M12插座的SITRANS FCT030发射器、带有M12连接器的传感器电缆、一包电缆接头、快速启动指南以及包含软件、证书和设备手册的CD。 SITRANS FCS400传感器...
根据提供的文件信息,本文将详细解释“欧姆龙FCS计算(vb)”中的关键知识点,包括欧姆龙串口通信的基本概念、FCS(Frame Check Sequence)校验的原理及其在VB(Visual Basic)环境下的实现方法。 ### 欧姆龙串口...
标题中的“fcs交互”可能指的是某个特定的软件或系统中的功能模块,它涉及到了用户与系统的交互方式。由于没有具体的信息,我们可以假设这可能是关于前端客户端(Frontend Client Side)和服务端(Server Side)之间...
字符串FCS校验码计算方法