`
hereson
  • 浏览: 1451256 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Flex连接FMS实现用户列表(使用SharedObject)

    博客分类:
  • fms2
阅读更多

1.先在FMS的安装目录中添加自己的应用(例如我的目录D:\Macromedia\Flash Media Server 2\applications),在applications目录下建立文件夹userList。

2.用文本编辑器编写服务器端脚本main.asc文件,内容如下:

js 代码
  1. application.onAppStart = function()   
  2. {   
  3.     userList_so = SharedObject.get ("userList","false");   
  4. }   
  5. application.onConnect = function(client,userName)   
  6. {   
  7.     client.userName = userName;   
  8.     userList_so.setProperty (userName, userName);   
  9.     return true;   
  10. }   
  11.   
  12. application.onDisconnect = function(client)   
  13. {   
  14.     userList_so.setProperty(client.userName,null);   
  15. }  

 

3.编写客户端应用userList.mxml,内容如下:

xml 代码
  1. <!---->xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp();">  
  3.     <mx:Label x="79" y="63" text="User Name:" fontWeight="bold" fontStyle="italic"/>  
  4.     <mx:TextInput x="155" y="61" id="txtUserName"/>  
  5.     <mx:Button x="82" y="89" label="Connect To Flash Media Server" width="233" fontWeight="bold" fontStyle="italic" click="connectServer();"/>  
  6.     <mx:List x="82" y="145" width="233" height="252" id="listUserList" labelField="userName">mx:List>  
  7.     <mx:Label x="82" y="119" text="User List:" fontWeight="bold" fontStyle="italic"/>  
  8.     <mx:Script>  
  9.         <!----> 
  10.             import flash.net.*;  
  11.             import mx.controls.*;  
  12.             import flash.events.*;  
  13.             import mx.collections.ArrayCollection;  
  14.               
  15.             private var conn:NetConnection;  
  16.             private var sharedObject:SharedObject;  
  17.               
  18.             NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;  
  19.             SharedObject.defaultObjectEncoding  = flash.net.ObjectEncoding.AMF0;  
  20.               
  21.             private function initApp():void  
  22.             {  
  23.                 conn = new NetConnection();  
  24.                 conn.addEventListener(NetStatusEvent.NET_STATUS, netStatus);  
  25.                 conn.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);  
  26.             }  
  27.               
  28.             private function netStatus(event:NetStatusEvent):void  
  29.             {  
  30.                 var connStatus:String = event.info.code;  
  31.                 Alert.show(connStatus);  
  32.                 if(connStatus == "NetConnection.Connect.Success")  
  33.                 {  
  34.                     sharedObject = SharedObject.getRemote("userList", conn.uri, false);  
  35.                     sharedObject.addEventListener(SyncEvent.SYNC, soOnSync);  
  36.                     sharedObject.connect(conn);  
  37.                     listUserList.dataProvider = new ArrayCollection();  
  38.                 }  
  39.             }  
  40.               
  41.             private function soOnSync(event:SyncEvent):void   
  42.             {  
  43.                 var dp:ArrayCollection = listUserList.dataProvider as ArrayCollection;  
  44.                 dp.removeAll();  
  45.                 for(var i:String in sharedObject.data)   
  46.                 {  
  47.                     var item:Object = {userName:i,data:i};  
  48.                     dp.addItem(item);  
  49.                 }  
  50.                 listUserList.dataProvider = dp;  
  51.             }  
  52.               
  53.             private function netSecurityError(event:SecurityErrorEvent):void   
  54.             {  
  55.                 Alert.show("连接到服务器发生错误!"+event.text);  
  56.             }  
  57.               
  58.             private function connectServer():void  
  59.             {  
  60.                 Alert.show(txtUserName.text+"正在登录...");  
  61.                 conn.connect("rtmp://localhost/userList",txtUserName.text);  
  62.             }  
  63.               
  64.         ]]>  
  65.     mx:Script>  
  66. mx:Application>  
分享到:
评论
1 楼 zhaobin809 2008-12-12  
首先感谢你,因为这段代码给了我一些提示,我因为刚刚接触这个东西,所以还不太了解。我是flex连接red5,那么这个功能该怎么实现呢(主要是服务端的代码)?谢谢!

相关推荐

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

    然后,我们可以使用NetConnection对象发送和接收数据,实现用户之间的即时消息传递。 SharedObject则扮演了数据存储和共享的角色。在聊天室应用中,当用户发送消息时,这些消息通常会被存储在一个SharedObject中,...

    flex连接到FMS详解

    本文将详细阐述如何使用Flex连接到FMS,并实现视频发送功能。 **一、准备工作** 1. **开发工具**: 首先,你需要安装Flash MX Authoring工具,这是Flex的基础。同时,你也需要Flash MX Communication Server,它是...

    FMS案例开发[整理].pdf

    SharedObject是客户端和服务器之间同步数据的一种机制,当用户登录时,其在线状态会被更新并广播给其他用户,实现在线用户列表的实时更新。 此外,案例开发还包括了如何创建可交互的FMS连接、基于FMS的流媒体播放...

    FMS案例开发.pdf

    在线用户的状态通过FMS的共享对象(SharedObject)来维护。每个用户登录后,其在线状态会更新到SharedObject中,这样所有客户端都能实时获取到当前在线用户的信息。这种方式提高了效率,减少了服务器的负担,因为...

    ShareObject对象详解

    `var so:SharedObject = SharedObject.getLocal("mydata", "/");` 这行代码创建了一个名为“mydata”的本地共享对象,指定的路径"/"表示该对象将在应用程序的根目录下。 2. 存储数据: `var user:Object = new ...

    flex java red5完全学习手册

    1. **SharedObject介绍**:共享对象是一种存储数据的方式,可以在不同的客户端之间共享。 2. **游戏中移动同步的原理和简单实现**:通过共享对象可以实现实时数据同步,例如游戏角色的位置信息更新。 #### 五、...

    Flash斗地主

    在AS3中,可以使用`NetConnection`和`NetStream`类与FMS建立连接,并通过`RemoteObject`或`SharedObject`类进行数据交换。 在【压缩包子文件的文件名称列表】中,"flash+FMS斗地主游戏源程序"可能包含了以下部分: ...

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

    在 Flex 的服务器端,使用 FluorineFx 实现远程共享对象的方式与 Flash Media Server (FMS) 不同。FluorineFx 提供了 `ISharedObjectService` 接口,其中的 `CreateSharedObject()` 方法用于创建远程共享对象。`...

    flash red5开发

    6. **Scope 和 Room 管理**: Scope 和 Room 是 Red5 中的概念,用于管理和组织客户端连接,实现用户分组、聊天室等功能。 7. **视频播放程序**: 书中会展示如何开发视频播放程序,涵盖从视频获取、播放控制到错误...

    red5入门教程.....

    - **概念解析**:SharedObject是Red5中用于存储跨连接会话数据的机制,能够在不同用户间共享信息,适用于游戏中的移动同步等场景。 - **移动同步原理**:通过SharedObject,游戏中的玩家移动和其他动态信息能够实时...

    red5流媒体服务器入门基础归类.pdf

    MultiThreadedApplicationAdapter是Red5应用程序的基础类,提供了操作SharedObjects、streams、连接和服务列表的方法,同时也是IScope的基本实现。开发者通常会自定义ApplicationAdapter类以实现特定功能。 以下是...

    red5入门教程

    SharedObject是Flash与服务器之间同步数据的一种机制,类似于小型数据库,适用于实现游戏中的玩家位置同步或其他需要实时更新的数据共享。 **6. 服务器执行计划** 教程可能还会介绍如何在Red5服务器上安排任务执行...

Global site tag (gtag.js) - Google Analytics