Flex与.NET互操作(十):FluorineFx.Net的及时通信应用(ApplicationAdapter)(一)

应用程序适配器对象也就相当于是一个Flash媒体服务器应用程序的对象。

使用FluorineFx.Net开发及时通信应用,我们可以通过ASP.NET网站来宿主,一个ASP.NET网站可以承载多个实时通讯应用程序。这些应用程序都存储ASP.NET网站的根目录下指定文件夹的根目录中。如下图示:

在开发FluorineFx的及时通信应用的时候,按照FluorineFx的目录结构配置ASP.NET的站点目录是非常简单的,只需要在ASP.NET站点下面建立一个名为apps的目录,那么FluorineFx就会认为此目录下的每一个文件夹就表示一个FluorineFx应用。

我们可以通过FluorineFx来开发及时文字聊天、视频聊天、视频录制、媒体播放程序以及WebGame等类似及时应用程序。比如我们需要开发一个视频聊天系统,OK,那便在ASP.NET站点目录下建立一个apps目录,然后在apps下建立一个名为VideoChat的目录,如下目录结构:

在Flash或是Flex客户端,我们就可以使用下面的代码来连到这个基于FluorineFx的视频聊天应用。

private var ns:NetConnection;
public function ConnectionFxApp():void
{
    ns = new NetConnection();
    ns.connect("rtmp://localhost:1974/VideoChat");
    ns.client=this;
    ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
}

private function onNetStatusHandler(evt:NetStatusEvent):void
{}

每个应用程序都有其自己的应用范围和层次的根源,这和FMS、Red5是一样的规律。无论是范围还是层次,他都有一个唯一的名字(应用名、实例名等)来区分,我们也可以叫他们为应用程序的实例。这些实例可以是聊天室房间、视频流以及共享对象等。

这些其实是非常容易理解的,如上图示的聊天室房间分配,分别有Room1,Room2,Room3三个聊天房间,那么对于VideoChat这个聊天应用来说要进行视频聊天就有三条连接线路,分别是:

1、http://localhost:1974/VideoChat/Room1

2、http://localhost:1974/VideoChat/Room2

3、http://localhost:1974/VideoChat/Room3

除了聊天室和应用的层次外,应用程序里还有诸入视频流、共享对象等。他们可以共同应用,也可以为不同的房间分别建立不同的共享对象,如果你要想实现不同房间里的用户可以相互聊天不想让别的房间的人看到,OK,此时你就可以为该房间独立创建一个共享对象来实现。

当开发程序需要去连接客户端,处理服务端事件、调用客户端方法等,就需要自定义一个应用程序适配器(ApplicationAdapter),此适配器必须继承并实现 FluorineFx.Messaging.Adapter.ApplicationAdapter。 FluorineFx.Messaging.Adapter.ApplicationAdapter做为一个新的应用程序的基类,提供了客户端与应用程序之间通信的接口方法、数据流以及共享对象等。它能够时时处理应用程序的启动、停止、客户端的连接和断开。

在Flash或是Flex客户端,我们可以通过NetConnectin.call()调用应用程序适配器的方法。如下示例代码块:

服务器端应用适配器所定义的代码:

public class Application : ApplicationAdapter
{
   public string Echo(string msg)
   {
      return "Echo: " + msg;
   }
}

Flash/Flex客户端可以通过以下代码块调用服务器端的方法:

private var ns:NetConnection;
private function CallServerMethod():void
{
    nc = new NetConnection();
    nc.connect("rtmp://localhost:1974/application");
    nc.onResult = function(obj) 
    {
        trace("The result is " + obj);
    }
    nc.call("Echo", nc, "Hello");
}

本文就先介绍到这里,下篇将接着本篇介绍FluorineFx.NET中客户端调用服务器端方法和服务器端呼叫客户端的方法。

(0)

相关推荐

  • Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)

    FluorineFx所提供的远程共享对象(Remote Shared Objects)和FMS的共享对象的功能是一样,对于熟悉FMS开发的朋友来说,学习FluorineFx的远程共享对象是非常简单的. 共享对象可以在服务器端创建,也可以在客户端创建.在客户端创建共享对象的方法和使用FMS开发是一样的,创建一个 NetConnection对象,通过该对象的connect()方法连接到服务器,然后通过SharedObject.getRemote()方法就可以在客户端创建一个远程共享对象.如下实例代码

  • Flex与.NET互操作(十):FluorineFx.Net的及时通信应用(ApplicationAdapter)(一)

    应用程序适配器对象也就相当于是一个Flash媒体服务器应用程序的对象. 使用FluorineFx.Net开发及时通信应用,我们可以通过ASP.NET网站来宿主,一个ASP.NET网站可以承载多个实时通讯应用程序.这些应用程序都存储ASP.NET网站的根目录下指定文件夹的根目录中.如下图示: 在开发FluorineFx的及时通信应用的时候,按照FluorineFx的目录结构配置ASP.NET的站点目录是非常简单的,只需要在ASP.NET站点下面建立一个名为apps的目录,那么FluorineFx就

  • Flex与.NET互操作 了解FluorineFx的环境配置(远程对象、网关、通道、目的地)

    在本系列文章的前面几篇文章中所介绍的访问Webservice的方法,也就是一种远程对象方法,只不过他是基于WEB服务(WebServie)的远程访问,不是基于远程对象(Remoting Object)的的远程访问.要想直接实现基于对象的远程访问是比较麻烦的,然后FluorineFx则专门为我们提供了该功能,通过 FluorineFx的核心库来开发远程对象(Remoting Object)服务,具体是怎么实现的呢? FluorineFx要求为远程对象提供[RemotingService]标记来提供

  • Flex和.NET协同开发利器FluorineFx Flex与.NET互操作

    通过这些方式来完成与服务端的通信是非常方便和简单的,但有他的缺点就是通信数据量较小,如要传输大量的数据或是实现不同对象的序列化传输,它们则满足不了我们的需求,需要寻找另外一种通信协议,另一种高效的传输协议来代替SOAP协议传输的方案,那便是AMF(ActionScript Message Format)协议. 开源项目FluorineFx就是专门针对.NET平台与Flex通信提供的AMF协议通信网关,我们可以通过FluorineFx很方便的完成与.NET的通信. FluorineFx官方提供了安

  • Flex与.NET互操作(十三):FluorineFx.Net实现视频录制与视频回放

    通过它我们可以非常方便的实现在线视频录制.视频直播.视频聊天以及视频会议等类似应用程序的开发. 在<FMS3系列(四):在线视频录制.视频回放 >这篇文章里我写了通过FMS来实现在线视频录制和视频回放的功能,客户端的开发和这篇文章是相同的,不同的是本文将使用Flex来开发. 首先我们来看看使用FluorineFx服务端是如何开发的,建立ApplicationAdapter是必然的,这里我们为本文中的示例程序建立的ApplicationAdapter为VideoApplication,并为其添加

  • Flex与.NET互操作(十一):FluorineFx.Net的及时通信应用(Remote Procedure Call)(二)

    NET的服务器端同样也可以非常方便的呼叫客户端,调用客户端的方法(比如实现系统广播). 一.客户端的RPC(客户端调用服务器端) 要想实现客户端访问服务器端的方法,首先得对ActionScript中的NetConnection比较熟悉,该类提供了一个示例方法call()专们用来做RPC访问,该方法的定义如下: public function call(command:String, responder:Responder,  arguments):void 比如说我们在开发一个及时应用的时候,所

  • Flex与.NET互操作(八) 使用FluorineFx网关实现远程访问

    于此,本文将使用FluorineFx网关来提供数据服务等多项功能来介绍通过FluorineFx实现远程访问的相关知识点. FluorineFx提供的远程访问包括有很多方面的知道点,本文只介绍其中的三个知识点:访问远程对象返回对象,返回DataTable,返回DataSet对象.FluorineFx安装包里自带有相关的示例程序,要学习更多可直接参考这些示例程序. 在实现访问前我们同样来做一些准备工作,建立好远程对象,如下: 1 namespace Fluorine.ServiceLibrary 2

  • FluorineFx.NET的认证(Authentication )与授权(Authorization)Flex与.NET互操作 九

    应用程序可根据用户信息授予和拒绝执行.FluorineFx.NET的认证和授权使用.Net Framework基于角色的安全性的支持. 比如说我们需要自定义一个认证与授权的方案,指定那些远程服务上的那些方法将要被认证或授权以及授权用户角色组等,我们就需要自定义一个 LoginCommand并实现ILoginCommand接口或者继承于 FluorineFx.Security.GenericLoginCommand(此类实现了ILoginCommand接口)基类.接口定义如下: 1 namespa

  • Flex与.NET互操作 使用HttpService、URLReqeust和URLLoader加载/传输数据

    ActionScript 3.0中提供的数据加载请求类主要是HTTPService,URLLoader和URLRequest,可以通过他们协同来完成数据加载和请求.下面我么便来看看这三个类是怎么来完成数据加载工作. 在本地IIS服务器上有如下定义的XML文件: 1 <?xml version="1.0" encoding="utf-8" ?> 2 <Root> 3   <Book> 4     <Id>1</Id

  • Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载

    在Flex的应用开发中,同ASP.NET,JSP,PHP等应用一样,都会有上传/下载文件的应用需求,Flex的SDK也为我们提供了专门的类 FileRefUdderence实现文件上传/下载.Flex只是作为一个客户端,要实现上传或下载必须得为其提供一个服务端来接受上传或下载的请求,本文以ASP.NET中的HttpHandler作为文件上传的服务端来完成上传功能. OK,我们从Flex客户端开始,看看客户端是通过什么方式想服务端发起请求.Flex客户端要完成文件上传下载都是通过FileRefUd

随机推荐