Android手机视频聊天服务器Red5官方指南翻译文档格式.docx
- 文档编号:14040367
- 上传时间:2022-10-17
- 格式:DOCX
- 页数:31
- 大小:1.33MB
Android手机视频聊天服务器Red5官方指南翻译文档格式.docx
《Android手机视频聊天服务器Red5官方指南翻译文档格式.docx》由会员分享,可在线阅读,更多相关《Android手机视频聊天服务器Red5官方指南翻译文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
连接
连接代表两个不同终端之间的通信通道,这通常包含一个FlashPlayer和Red5。
每个连接有一个相关的客户端和域。
连接可以是长期的,轮询的或者短暂的。
Red5API中的IConnection接口提供被所有不同连接类型共享的连接方法。
当前Red5提供的连接的具体实现如下:
●RTMPConnection,存储客户端的流信息,数据传输通道,等待RPC调用,宽带设置,AMF编码类型(AMF0或者AMF3),连接状态和会话。
RTMPTConnection,这个类继承RTMPConnection,当通过HTTP为RTMP建立通道时提供附加的属性。
●RemotingConnection,代表一个远程的连接。
属性存储在实现对话的Servlet容器中。
这种类型的连接也用于数据服务DS(DataServices),通信,以及和BlazeDS或者LCDS相似的情况。
●TestConnection,只用于内部的JUnit测试。
在我们的应用程序中通过调用如下代码访问当前正在进行的连接:
这个连接通过一个特殊线程中的局部变量进行恢复,它在FlashPlayer连接Red5时被设置。
客户端
客户端在绝大多数情况下是连接到我们的Red5应用程序的一个用户的虚拟代表或一个FlashPlayer。
客户端包含在连接中平等提供的属性,一个连接对象中总是只有一个客户端对象。
在客户端注册表中的每个上下文中都注册一个客户端,和Red5本身的绝大部分一样,客户端注册表可以被扩展提供自定义的特性或按原样使用。
在我们的应用程序中客户端可以通过如下的代码恢复:
客户端在注册时的注册表引用方便地放置于每个客户端中,除了注册表外客户端还包含了它的创建时间,唯一的id和任何它连接的域。
上下文
Red5大量使用Spring框架,这是一个控制反转(IOC)框架。
当我们使用Red5时并不要求我们深入了解控制反转是什么或者它怎样工作,只要知道我们的应用程序的配置和服务器本身大部分情况下均以XML配置文件的方式在执行就足够了。
Spring被用于配置Red5服务器本身,我们的应用程序也一样。
对Spring框架有较好的掌握将使理解Red5怎样运行和出错时找到问题变得更容易。
Red5中的上下文基本囊括了Spring应用程序上下文,并且提供Red5附加的特殊模块的入口,比如客户端注册表或者其他的服务。
它的主要目的是映射上下文路径到请求将被处理的域。
这个服务可以使我们绑定我们的应用上下文或者它的父上下文。
所有Spring上下文的方法和属性在Red5中都提供,所以当我们管理我们的上下文配置文件中的Hibernate或者其他的帮助库文件时,我们可以通过一个简单的方法调用访问他们。
在Red5服务器中,上下文的具体实现是位于org.red5.server包中的Context类。
在Red5中提供两种主要的上下文类型:
●Default类型,默认的上下文和全局应用程序上下文是一样的,以顶级或全局的水平为回应提供对象和资源,在默认的上下文中bean怎样配置取决于部署的类型是单机模式(Standalone)还是网络应用程序模式(WAR)。
●Web类型,网络上下文定义由Spring配置文件以"
-web.xml"
为标注的文件指定,在一个典型的Red5应用程序中上下文配置文件被命名为red5-web.xml。
最后,我们不要混淆了在Tomcat中与Spring一起使用的JEE上下文和Red5上下文,即使他们有许多的相似之处。
一个JEE上下文代表一个web应用程序,在Red5中这更类似于一个域(scope)。
域
一个域是连接到相同的上下文路径中的一组客户端之间共享的有状态的对象,类似于FlashMediaServer(FMS)中的一个应用程序。
域分等级排列,这使一个域拥有一个父域和任何数目的子域成为可能。
如果一个客户端连接到一个域那么同时地也连接到它的父域。
域对象用于访问资源,共享对象,流等等。
一个域当做在应用程序中组织事物的的选项提供。
多个域就相当于Web上下文或者聊天服务器房间,他们用来区分服务器上的项目群组。
每个域可能拥有服务器资源所允许的数目的子代或子域,在Red5服务器中一个域的具体实现是在包org.red5.server中的Scope类,我们的应用程序域将包含我们的应用程序以及引用了核心服务器对象和全局域的上下文,在这种情况下这里的全局域指的是这个应用程序域的父域。
在Red5中有四种类型的域,每一种都带有它特殊的意图:
●Global类型,最高等级的域,在Red5中只有唯一的一个运行实例。
这个域被命名为“default(默认的)”,它是所有应用程序域的祖先。
在Red5服务器中一个Global域的具体实现是位于包org.red5.server中的GlobalScope类。
●Application类型,这种类型已包含用户应用程序。
在Red5内它将通过名称和一个上下文进行匹配,在Red5中一个Application域的具体实现是位于包rg.red5.server中的WebScope类。
●Room类型,一个应用程序域的一个子孙或子域或者以前创建的Room域,一个Room域层次较好的比方就是一个聊天服务器模型附加有一块大堂区域的两个房间。
(此原文较难翻译,按照我的理解就是指类似于QQ界面中两个人聊天的那块区域。
Agoodofexampleofaroomscopehierarchyishavingalobbyareawithacoupleroomsattachedinachatservermodel.)
●Basic类型,这种类型的域一般情况下用于传播流和分享对象。
用两个应用程序说明我们的服务器。
名为“myapp”和名为“myotherapp”的应用程序将和至少一个房间,一个分享对象和一种传播流来显示。
理解这个概念最好的方式就是想象一下拥有枝干和叶子的树木或者你的硬盘中的文件机构。
试图连接到“myapp”中的“room1”的NetConnectionurl的实例将像这样:
rtmp:
//localhost/myapp/room1。
类似地,假如一个客户端试图连接到“myotherapp”中的“room1”,这个url将像这样:
//localhost/myotherapp/room1。
如果我们想要请求如上文所示“myapp”中的“live0”实时流(livestrean),我们首先需要连接到这个流保存的Room域。
这个例子要求的一个简单的网络状态处理器(netstatushandler)如下:
这个例子中展示我们的视频的最简单的Flexmxml如下:
默认情况下全局域不能够从我们的Flash应用程序直接访问,访问这种“特殊”类型的域被当做安全策略来限定。
入口
每个Red5应用程序必须实现IScopeHandler接口,以便处理传入的请求,监听事件和对事件作出应答。
这个章节讨论我们的应用程序提供的入口和他们执行给定场景的顺序细节。
*start,*connect,*join,*leave,*disconnect,*stop
以*标注的方法表明他们不仅独立存在,而且也作为方法存在于他们操作的域中。
域的操作方法如下:
●start—只被调用一次,当一个域被第一次创建时调用。
●connect—每次连接到域之前被调用。
●join—当客户端进入域之前被调用。
●leave—调用之后客户端离开域。
●disconnect—当连接从域断开之后被调用。
●stop—当一个域被销毁之前被调用。
当在应用程序层次被调用时,这个应用程序将被停止;
假如,在room层次被调用时,它将简单地在那个域停止处理操作。
●addChlidScope—只在子域被添加之前调用。
●removeChildScope—调用后子域被移除。
●serviceCall—请求服务器方法时调用。
应用程序适配器方法如下:
●appStart—当第一次请求应用程序或room时调用。
●appConnect—为应用程序制作一个连接时调用。
●appJoin—每次客户端进入应用程序时调用。
●appLeave—当客户端离开应用程序时调用。
●appDisConnect—当一个连接从应用程序断开时调用。
●appStop—当应用程序被销毁时调用,当一个程序停止时执行。
●roomStart—当且仅当一个room启动时调用。
●roomConnect—每次连接到Room时调用。
●roomJoin—每次客户端进入room时调用。
●roomLeave—当客户端离开room时调用。
●roomDisconnect—连接从room断开时调用。
●roomStop—当room被处理时调用。
一个进入的连接通过如下的步骤执行:
1.如果是第一次连接到某个域中,则roomStart被请求的域调用。
2.connect被应用程序域(applicationscope)调用。
3.appConnect被调用。
4.appJoin被调用。
5.connect被room域调用。
6.roomConnect被调用。
7.roomJoin被调用。
5—7步骤根据应用程序域的水平数字将被重复执行。
从我们的应用程序中断开将通过如下步骤:
1.disconnect被room域调用。
2.调用roomDisconnect。
3.leave被room域调用。
4.roomLeave被调用。
5.disconnect被应用程序域调用。
6.appDisconnect被调用。
7.leave被应用程序域调用。
8.appLeave被调用。
连接根据应用程序域的级别越低,就执行越多次数的1—4步骤。
只要appLeave被调用,连接就不在连接到服务器。
移植
当从一种服务器类型移植一个应用程序到另一种类型,清楚当前服务器方法的方法映射是很重要的。
接下来的这张表显示了FMS中的方法映射到Red5的应用程序适配器。
应用程序入口
在Red5中创建应用程序有三种支持的方式:
单线程,多线程,和Red5插件。
应用程序适配器提供与连接,域,共享对象,调度服务协作的一种方式。
当在开发应用程序时一个要知道的重点是,应用程序适配器在配置文件和服务器代码中被当做Web处理器来定义。
直到最近,所有Red5的安装方式都要求使用一个JEE容器服务器比如Tomcat或者Jetty来提供我们的应用程序存在的一种方式。
现在已有另一种不需要JEE容器的方式来使用Red5,即使用Red5插件应用程序。
单线程
类ApplicationAdapter是应用程序在单线程模式下确保回调被执行的基类。
即使这个类的实现是单线程的因此而线程安全的,但我们必须记住任何花费较多时间的操作都会妨碍客户端快速地被接纳。
在尽可能高效
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 手机 视频 聊天 服务器 Red5 官方 指南 翻译