- 浏览: 260846 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
qq820456878:
大神,您好,看了您的文章,深知小弟难望其项背啊。有一点不明白的 ...
Flex中捕获浏览器的前进、后退、刷新、关闭事件 -
skydove:
wushexin 写道楼主,详细说明网址打不开呀...可以去这 ...
RED5的Eclipse插件安装 -
JavaCFW:
JavaCFW 写道
FLEX利用FLASH MEDIA SERVER进行视频的在线录制和回放 -
JavaCFW:
FLEX利用FLASH MEDIA SERVER进行视频的在线录制和回放 -
daveyking:
客户端代码不太懂,是在哪写的?flash actionscri ...
抛弃LCDS和FMS,在tomcat下开发Red5应用(第三篇)-ApplicationAdapte
一个完整的应用过程包括(1)应用程序启动。 (2)客户端建立连接。 (3)允许/拒绝客户端连接。 (4)客户端断开连接。(5)应用程序停止。这几个基本的动作。这些动作都在ApplicationAdapter中进行了实现,我们自己写的类只需要继承该类即可。对比FMS的各个过程,具体见Red5的安装安装版的安装目录下的MigrationGuide.txt文件。该迁移向导对比了FMS和Red5在上述过程中的方法对应。
=============== ===============
FCS / FMS Red5
=============== ===============
onAppStart appStart (1)应用程序启动
roomStart
onAppStop appStop (5)应用程序停止
roomStop
onConnect appConnect (2)客户端建立连接
roomConnect
appJoin
roomJoin
onDisconnect appDisconnect (4)客户端断开连接
roomDisconnect
appLeave
roomLeave
=============== ===============
再看如何允许/拒绝客户端连接。FMS提供了方法`acceptConnection` 和`rejectConnection`进行允许和拒绝客户端连接的操作。而在Red5中,允许一个客户端连接不需要特别的操作,只需要在appConnect或roomConnect方法中返回"true"的布尔值就可以了。拒绝客户端连接,只需要调用rejectClient方法就可以了,rejectClient方法可以带一个参数以告知客户端是什么原因拒绝客户端连接。
下面我们通过一个实例来观察上述的各个过程:
假定如下场景:我们在服务器端有一个保存连接当前服务器的用户的列表,以连接时输入的用户名为标示,当有重复的用户名的客户端连接时,服务器拒绝该客户端连接,并告知客户端拒绝连接的原因。
1.修改上一篇的服务器端代码(Application.java):
package red5.example.red5server; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; import org.red5.server.api.IScope; import org.red5.server.api.service.IServiceCapableConnection; public class Application extends ApplicationAdapter { List userList = null; @Override public boolean appStart(IScope scope) { System.out.println("red5Server--上下文启动..."); userList = new ArrayList(); System.out.println("初始化用户列表结束..."); return super.appStart(scope); } @Override public boolean appConnect(IConnection conn, Object[] args) { System.out.println("red5Server--有客户端要建立连接..."); String userName = args[0].toString(); int cnt = 0; for (Iterator iter = userList.iterator(); iter.hasNext();) { IConnection element = (IConnection) iter.next(); if(userName.equals(element.getAttribute("userName").toString())) { rejectClient("已经有一个"+userName+"在连接中,请使用其他用户名连接..."); } cnt++; } if(cnt == userList.size()) { conn.setAttribute("userName", userName); userList.add(conn); } //if(cnt == userList.size()) return super.appConnect(conn, args); //else //return false; } @Override public void appDisconnect(IConnection conn) { System.out.println("red5Server--客户端断开连接..."); for (Iterator iter = userList.iterator(); iter.hasNext();) { IConnection element = (IConnection) iter.next(); if(element.getAttribute("userName").toString().equals(conn.getAttribute("userName").toString())) { userList.remove(element); break; } } //IServiceCapableConnection client = (IServiceCapableConnection) conn; super.appDisconnect(conn); } @Override public void appStop(IScope scope) { System.out.println("red5Server--上下文停止..."); super.appStop(scope); } }
2.编写客户端代码进行测试(red5client002.mxml):
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import flash.net.*; import flash.events.*; import flash.utils.*; import mx.controls.*; private var nc:NetConnection; public function connServer():void { nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus); nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError); nc.connect(txtServerURL.text,txtUserName.text); } private function netStatus(event:NetStatusEvent):void { //txtResult.text = ""; var connStatus:String = event.info.code; //Alert.show(connStatus); txtResult.text += connStatus; if(connStatus == "NetConnection.Connect.Success") { //登录成功,不做处理 } else if(connStatus == "NetConnection.Connect.Rejected") { //登录被拒绝 txtResult.text += event.info.application; } } private function netSecurityError(event:SecurityErrorEvent):void { Alert.show("netSecurityError: " + event); } ]]> </mx:Script> <mx:Label x="10" y="38" text="输入用户名:"/> <mx:TextInput x="83" y="36" id="txtUserName" width="167"/> <mx:Label x="10" y="10" text="连接的服务器:"/> <mx:TextInput x="83" y="8" id="txtServerURL" text="rtmp://localhost/red5Server"/> <mx:Button x="10" y="64" label="连接到red5服务器" width="240" click="connServer()"/> <mx:TextArea x="10" y="94" width="240" height="154" id="txtResult"/> </mx:Application>
3.启动tomcat,在浏览器输入http://localhost:8080/red5/red5client002.html ,在输入用户名的文本框中输入“testuser”,点击“连接到red5服务器”按钮,看到结果文本域显示“NetConnection.Connect.Success”,再开一个浏览器,同上操作,可以看到结果文本域里显示“NetConnection.Connect.Rejected已经有一个testuser在连接中,请使用其他用户名连接...NetConnection.Connect.Closed”。
最后停止tomcat服务器,再观察tomcat的控制台,应用上下文将整个过程的输出语句都打印了一遍,完成了整个过程。
下一篇将讲解Flex客户端和后台方法相互调用。
发表评论
-
red5加大内存的配置方式
2010-11-18 15:03 0set JAVA_OPTS=%LOGGING_OPTS% %S ... -
RED5 0.9 下载
2009-07-23 10:59 1843http://build.xuggle.com/view/St ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第八篇)-音/视频发布和订阅
2009-04-30 20:49 1910http://www.dreamtech.com.cn/SWF ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第七篇)-RSO
2009-04-29 16:28 1524点击链接查看吧,不能插入了~~ http://www.dre ... -
配合V H Screen Capture Driver共享屏幕
2009-04-10 23:40 0VH Screen Capture Driver -
RED5 v0.8 RC2 如何建立新的应用程序
2009-02-11 22:38 0参照:Chapter 11. Create new appli ... -
red5 v8.0 rc2 发布了
2009-02-11 17:51 1177http://code.google.com/p/red5/ -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第六篇)-如何使用RemoteObject
2009-01-08 14:32 4195找到这个资料Calling Java methods from ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第五篇)-客户端和服务器端方法调用的参数传递
2009-01-05 17:07 3059在上一篇演示了客户端和服务器端方法调用,其实已经一并演示了参数 ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第四篇)-客户端和服务器端的方法互相调用
2009-01-05 17:06 3702客户端和服务器端的方法相互调用比较重要,在线列表基本上全是用这 ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第二篇)-建立新的Red5应用
2009-01-04 09:56 8217网上找的文章大部分是介绍在win下安装版的Red5下新建应用程 ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第一篇)-将Red5部署到tomcat中
2009-01-04 09:55 8706有两种方法可以实现,第一种方法要覆盖tomcat的ROOT,就 ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(引子)
2009-01-04 09:52 3837使用LCDS其实主要用到了 ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第十二篇)-电子白板桌面共享
2008-12-22 16:16 0站位 http://vworkers.com/flex3/fv ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第十一篇)-电子白板协同浏览
2008-12-22 16:15 0站位 -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第十篇)-电子白板文档共享浏览
2008-12-22 15:58 0前期知识准备:(任意文档转换为SWF载入到Flex中并控制) ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第九篇)-电子白板画图篇
2008-12-18 22:24 0电子白板应该具有的功能:1.画图。2.多类型文档共享查看。3. ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第八篇)-音/视频发布和订阅
2008-12-18 16:12 0本篇介绍音频、视频的发布和订阅(相当重要的类NetStream ... -
抛弃LCDS和FMS,在tomcat下开发Red5应用(第七篇)-RSO
2008-12-16 15:45 0标题不能写那么长~~~哈哈,RSO就是RemoteShared ... -
RED5的Eclipse插件安装
2008-11-19 14:07 4002这里有详细说明:http://jira.red5.org/co ...
相关推荐
标题中的“抛弃LCDS和FMS,在tomcat下开发Red5应用(第十一篇)-电子白板协同浏览”表明本文将介绍如何在不使用LCDS(LiveCycle Data Services)和FMS(Flash Media Server)的情况下,利用Tomcat服务器来开发一个基于...
NULL 博文链接:https://tj007-bo.iteye.com/blog/299376
首先,你需要准备相应的开发环境,包括Eclipse 3.3、FlexBuilder3插件、MyEclipse 6.0、LCDS软件以及Tomcat 5或更高版本的Web服务器。MyEclipse是一个强大的Java开发工具,用于管理和部署J2EE项目。FlexBuilder3则...
在开始开发Flex + LCDS + Java应用程序之前,你需要准备以下开发环境: 1. Eclipse 3.3:这是一个流行的Java集成开发环境。 2. FlexBuilder3 beta2插件版:这是Eclipse的一个插件,用于Flex开发。 3. MyEclipse 6.0...
在本文中,我们将深入探讨如何搭建一个基于MyEclipse 6.5、Flex 3、Tomcat 6.0和ds-console.war的开发环境。这个环境主要用于开发和部署使用Flex前端与Java后端交互的应用程序,特别是通过LCDS(LiveCycle Data ...
### Flex学习之配置篇——如何在Eclipse中开发Flex #### 一、Flex的安装与配置 ##### 1. 安装方式 Flex 的安装有两种主要的方式:直接安装 FlexBuilder 或是在 MyEclipse 下安装 FlexBuilder 插件。推荐后者,...
本文旨在详细介绍如何在Flash Builder 4环境下完成LCDS与Java的配置过程,以实现动态数据交换及服务端功能开发。文中将涵盖以下主要步骤: 1. **安装Java与Tomcat** 2. **安装LCDS ES3** 3. **配置Flash Builder 4*...
Java 能够运行在几乎所有的操作系统上,这使得它成为了企业级应用开发的理想选择。Java 语言具有丰富的类库支持,可以方便地进行网络编程、数据库访问、图形界面设计等工作。此外,Java 平台还包括一系列工具和服务...
在实际开发中,Flex可以通过LCDS与Java的EJB、Spring等框架无缝对接,实现服务的动态发现和调用。同时,LCDS还提供了数据推送功能,通过Server-Sent Events或WebSocket,服务器能够主动向客户端推送更新,这对于实时...
在部署项目时,确保Java编译后的class文件位于Flex LCDS项目下的webroot/WEB-INF/classes目录,以便服务器能够正确加载和执行。在MyEclipse中,你可以方便地发布整个项目到Tomcat服务器,完成部署。 总之,Flex ...
Flex、LCDS(LiveCycle Data Services)和Java的结合是Adobe Flex开发中常见的技术栈,主要用于构建富互联网应用程序(Rich Internet Applications,RIAs)。本文将深入探讨这些技术及其相互之间的协同工作方式。 ...
【置flex开发环境(MyElipse6.0_Eclipse3.3_FlexBuilder3_LCDS)】这篇描述主要介绍了如何配置一个完整的Flex开发环境,包括所需软件、安装步骤以及在MyEclipse6.0中创建和部署Flex项目的详细流程。 1. **所需软件**...
随着互联网技术的发展,Flex作为一种基于Adobe Flash平台的应用程序框架,凭借其强大的界面设计能力和高性能的表现效果,在富客户端应用开发领域占据了一席之地。Java作为服务器端的主流开发语言之一,与Flex的结合...
通过本文的详细介绍,我们不仅了解了Flex、LCDS以及Java的基本概念和发展背景,还深入学习了如何在Eclipse环境下搭建开发环境,并具体介绍了创建Flex LCDS项目的步骤。对于初学者而言,这些知识点将有助于快速上手并...
LCDS是Adobe为Flex、AIR等应用提供数据处理和后端服务的一套解决方案,其主要功能包括数据同步、事务处理、数据持久化、实时通信等,尤其适用于构建具有复杂数据交互需求的RIA(Rich Internet Application)。...