`

Flex4 + Flash Media Server 开发简单聊天室程序

    博客分类:
  • Flex
阅读更多

       我是一个Flex的初学者,除了懂一点点AS的语法外,所有的特性都是不了解的。最近由于项目需要在WEB上开发及时通信,也就研究一下web上的及时通信技术,这些技术包括ajax,cometd,html5中的websocket,以及flash中的这流媒体技术。最后我选择flash,除了html5,我都做了实验,感觉都不能让我满意,最后决定试试Flash中的这种技术。

       由于懂的太少,只好上网查资料了,网上的东西是真丰富呀,各种介绍都有,有用flash实现聊天室的,有用flash实现视频会议的,真的很诱人。。。

       还是从简单的入手吧,就去看了一个聊天室的小程序。

       程序代码如下:

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="TextSO ();"> <mx:Script> <![CDATA[ import flash.events.SyncEvent; import flash.events.NetStatusEvent; import flash.events.MouseEvent; import flash.net.SharedObject; import flash.net.NetConnection; import mx.controls.Alert; private var text_so:SharedObject; private var nc:NetConnection; private var rtmpGo:String; private var good:Boolean; public function TextSO ():void { button.label="Send"; button.addEventListener (MouseEvent.CLICK,sendMsg);//为发送按钮添加发送事件 rtmpGo = "rtmp://localhost/FirstApp";//这里设置FMS服务器的连接地址,basicSO即为, //FMS安装目录下Applications下自己手动新建的一个文件夹名称,也是FMS的工程名,就是这么简洁,不可意议 nc = new NetConnection( );//产生一个连接对象 nc.connect (rtmpGo);//连接到上面的地址 nc.addEventListener (NetStatusEvent.NET_STATUS,doSO);//加入连接的监听事件,以便根据连接返回的状态做相应处理 } private function doSO (e:NetStatusEvent):void { good=e.info.code == "NetConnection.Connect.Success";//判断是否为连接成功状态 //连接返回的状态有好几种,大家可以参看FMS的文档,很详尽 if (good)//如果连接成轼,执行如下操作 { text_so=SharedObject.getRemote("test",nc.uri,false);//得到远程共享对象,false属性是设置共享的数据为非持久化的, //即重启服务器后,先前的数据不会保存 text_so.connect (nc); text_so.addEventListener (SyncEvent.SYNC,checkSO); //为共享对象添加异步事件,这也是服务器同步处理多客户端最关键的地方, //一个客户端进行了什么操作,其它客户端也会有相应的变化,就是通过此事件来完成的 } else { Alert.show("connect failed :"); } } private function checkSO (e:SyncEvent):void { for (var chng:uint; chng<e.changeList.length; chng++) { switch (e.changeList[chng].code) { case "clear" : break; case "success" : trace (text_so.data.msg); break; case "change" ://一个客户端改变数据会更新所有客户端 textArea.htmlText+=text_so.data.msg + "\n"; break; } } } private function sendMsg (e:MouseEvent):void { text_so.setProperty ("msg",textInput.text);//将新的信息存入共享对象 textArea.htmlText+=text_so.data.msg + "\n";//更新客户端的信息列表 } ]]> </mx:Script> <mx:VBox> <mx:TextArea id="textArea" width="200" height="200"/> <mx:TextInput id="textInput"/> <mx:Button id="button" /> </mx:VBox> </mx:Application>


 

大致读一下代码,你会发现以下代码

  rtmpGo = "rtmp://localhost/FirstApp";//这里设置FMS服务器的连接地址,basicSO即为,
    //FMS安装目录下Applications下自己手动新建的一个文件夹名称,也是FMS的工程名,就是这么简洁,不可意议
    nc = new NetConnection( );//产生一个连接对象
    nc.connect (rtmpGo);//连接到上面的地址

是需要连接到某种服务器上,实际就是Flash Media Server

正好我的电脑上有一个Flash Media Server 2,就把它安装上,并查了一些相关资料,只要在安装目录的applications中创建一个FirstApp文件夹,这个服务就好了。

   在Flex中新建项目,进行测试,试了N多遍都以失败告终,即使看Flash Media Server 2后台管理提示有连接。

那就继续在网上找资料又是一个一个实例的测试最后才发现,

只要在
public function TextSO ():void
  之前加上

NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
   SharedObject.defaultObjectEncoding   = flash.net.ObjectEncoding.AMF0;

这两句就可以了。。

这是为什么呢?看看文档的说明吧。

Adobe AIR 和 Flash Player 9 提供两种不同的序列化格式:AMF3 和 AMF0。AMF3 是为 ActionScript 3.0 开发的默认序列化格式,与用于 ActionScript 1.0 和 2.0 的 AMF0 相比,AMF3 具有多种优点。AMF3 通过网络发送数据比 AMF0 更高效。AMF3 支持将 intuint 对象作为整型发送出去,并支持只可在 ActionScript 3.0 中使用的数据类型,例如 ByteArray、XML 和 IExternalizable。AMF3 只能在 ActionScript 3.0 和使用 AMF3 编码的服务器(例如 Flex 2)中使用。

ByteArray、FileStream、NetConnection、NetStream、SharedObject、Socket 和 URLStream 类均包含一个 objectEncoding 属性,为该属性分配的常量来自 ObjectEncoding 类。objectEncoding 属性的行为因对象而异;每个类的 objectEncoding 属性描述更加全面地说明了其行为。

看来Flash Media Server 2支持flash.net.ObjectEncoding.AMF0; 不支持新的AMF3 。

后面我换用Flash Media Server 3.5开发,把这两句去了,一样可以运行成功。。。

 

分享到:
评论

相关推荐

    Flash Media Server 3.5 开发的20多个例子

    《Flash Media Server 3.5 开发实例详解》 Flash Media Server(FMS)是Adobe公司推出的一款专业级的流媒体服务器,它为开发者提供了一种高效、稳定的方式来发布和管理实时音频、视频内容,以及交互式的富媒体应用...

    一步一步学Flash Media Server

    通过本文的学习,您已经了解了 Flash Media Server (FMS) 的基本概念、安装配置方法以及如何使用关键的 Application 类来构建简单的聊天室应用。虽然 FMS 已经不是最新技术,但它仍然在某些领域发挥着重要作用。希望...

    FluorineFx+Flex视频聊天室源代码

    FluorineFx+Flex视频聊天室源代码是一款基于Adobe Flex和FluorineFx技术构建的实时在线视频聊天应用程序。这个项目展示了如何利用这两项技术实现高效的多媒体通信,为用户提供一个互动性强、功能丰富的聊天环境。...

    Flex视频聊天室源码

    要运行这个Flex视频聊天室,你需要一个支持RTMP的服务器,如Adobe Flash Media Server或开源的Red5。在开发和调试过程中,你可以使用Flex Builder或IntelliJ IDEA等IDE,它们提供了集成的Flex开发环境和调试工具。 ...

    FLEX 开源聊天室

    《深入理解FLEX开源聊天室:构建实时交互的在线社区》 在当今互联网时代,实时通信已经成为各种在线应用的核心功能之一。"FLEX 开源聊天室"作为一个支持多人互动交流的平台,它允许用户进行私聊、群聊,以及创建...

    Flex视频聊天室

    【Flex视频聊天室】是一个基于Adobe Flash Media Server (FMS) 开发的在线交互平台,主要功能是提供实时的文本和视频通信。这个项目的核心技术是Adobe Flex,它是一种用于构建富互联网应用程序(RIA)的开发框架,...

    Flex实现的视频聊天室

    6. **服务器端技术**:尽管Flex主要负责客户端的开发,但视频聊天室还需要一个后端服务器来处理连接管理、消息路由等任务。可能使用的服务器技术有Adobe Flash Media Server、Red5或其他开源的RTMP服务器。 综上所...

    Flex和Fms3打造在线聊天室 源码和文档

    Flex和FMS3是构建实时互动应用程序的强大工具,尤其适合创建在线聊天室这样的实时通信平台。这个源码和文档集合提供了详细的步骤和技术说明,帮助开发者理解如何利用这些技术实现一个功能完备的聊天室。 Flex是一种...

    FLEX资源------Flash Media Managment Server中文版下载

    《Flash Media Management Server 中文版解析》 在IT领域,Flash Media Management Server(FMS)是Adobe公司推出的一款强大的流媒体服务器,专为在线视频、音频直播和点播服务提供支持。本文将深入探讨FMS的功能、...

    fms + flex 开发

    - **实时聊天室**: 创建即时消息传递系统。 #### 三、安装配置指南 1. **下载与安装** - 访问[Macromedia官方网站](http://www.macromedia.com/software/flashmediaserver/)下载FMS的开发者版本。 - 安装过程中...

    fms.rar_flex_flex and fms_fms_fms rtmp_fms flex

    标题"Fms.rar_flex_flex and fms_fms_fms rtmp_fms flex"和描述中的关键词揭示了这个压缩包包含的是与Adobe Flex和Flash Media Server(FMS)相关的项目资源,主要用于创建一个实时通信应用,例如聊天室。Flex是一种...

    flash red5开发

    Red5 是一款基于 Java 开发的开源流媒体服务器,与 Adobe 的 Flash Media Server (FMS) 类似,提供多种功能,包括流媒体传输、录制、共享对象、远程调用等。它支持RTSP协议,允许在下载过程中播放音频和视频流,同时...

    LiveRoomDemo_Server-master.zip_FlashMX/Flex源码_Flex_

    在本文中,我们将深入探讨一个名为“LiveRoomDemo_Server”的项目,该项目是一个基于Flex的在线聊天室,适用于部署在FMS(Flash Media Server)上,主要关注其服务器端实现。 一、Flex基础与架构 Flex作为客户端...

    基于ActionScript 3.0实现聊天室

    - **服务器技术**:通常使用如Flash Media Server、Red5或Node.js等服务器端技术来处理聊天室的逻辑和数据存储。 - **协议实现**:可能需要实现简单的文本协议(如IRC)或自定义协议,以处理用户的登录、消息发送...

    FMS案例开发.pdf

    在本案例中,我们主要探讨的是如何利用Adobe的FMS(Flash Media Server)技术来开发一个视频聊天室。FMS是Adobe提供的一款强大的流媒体服务器,它支持实时的音频、视频传输,以及数据共享,非常适合用于构建交互性强...

    fms3 技术指南1&2

    4. **实时通信**:FMS3支持实时交互,如聊天室、游戏和协作应用。这部分会讨论如何利用ActionScript与FMS3进行通信,实现服务器端脚本和客户端交互。 5. **应用程序开发**:使用FMS3开发应用程序通常涉及...

    FMS案例开发[整理].pdf

    在本FMS案例开发中,我们探讨了一个基于Adobe Flash Media Server 3 (FMS)的视频聊天室的构建过程。这个项目旨在满足日益增长的实时交互式互联网应用需求,特别是那些涉及视频通信的场景,如视频聊天、视频会议和...

Global site tag (gtag.js) - Google Analytics