惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
T
The Blog of Author Tim Ferriss
H
Help Net Security
博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
博客园 - 聂微东
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
B
Blog
Engineering at Meta
Engineering at Meta
V
V2EX
Hugging Face - Blog
Hugging Face - Blog

博客园 - 糊涂隐锋

[转]SSH框架搭建 Java与Flex通信[转] 使用 Eclipse Memory Analyzer 检测内存泄漏问题 [转] Myeclipse SVN 插件安装 将mina整合到tomcat中 JIRA管理思路[转] linux下安装jira4.4.1[转] CentOS 6.0 安装配置rails 2.3.11 + redmine 1.2.1 笔记[转] 安装项目管理工具 SVN+Redmine[转] MySql 优化[转] Spring中常用的操作数据库的(Dao)方法 [转] Red5共享对象的处理机制[转] 【转载】Red5 0.6 安全 quartz数据库方式与web工程整合 ShareObject 主要用途 - 糊涂隐锋 - 博客园 FLEX提高篇---------FMS两种方式实现简易聊天室 - 糊涂隐锋 - 博客园 ShareObject对象详解 Flex 中需要记住的一些东西[转] Flex或Flash的跨域访问解决方案
shareObject的使用
糊涂隐锋 · 2010-05-22 · via 博客园 - 糊涂隐锋

shareObject的使用

要在RED5中使用远程sharedObject,必须注意以下几点:
1,
sharedObject = SharedObject.getRemote( “远程sharedObject名称“, nc.uri, true );
对借助服务器在多个客户端间共享的对象返回一个SharedObject的引用。
nc为NetConnection对象。
2,
sharedObject.client = this;
客户端对象为本身。便于广播消息,监听事件。
3,
sharedObject.connect( nc );
通过nc链接到服务器。
4,
在与flashplayer 9以前发布的FMS服务器进行sharedObject交互时,
一定要指定nc.objectEncoding = flash.net.ObjectEncoding.AMF0;
否则flash无法监听到SYNC事件。目前使用的RED5服务器也是如此。
FLEX实例代码:
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” creationComplete=”initFun()”>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private var nc:NetConnection;
private var clientID:Number;
private var soChat:SharedObject;
private var arr:Array = new Array();
[Bindable]
private var con:ArrayCollection;
private function initFun():void
{
nc = new NetConnection();
nc.objectEncoding = flash.net.ObjectEncoding.AMF0;
nc.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);
nc.connect( “rtmp://localhost/MySOSample” );
}
private function statusHandler(event:NetStatusEvent):void
{
if(event.info.code == “NetConnection.Connect.Success”){
connectToChat();
}
}
private function connectToChat():void
{
soChat = SharedObject.getRemote( “wxwred5″, nc.uri, true );
soChat.addEventListener( NetStatusEvent.NET_STATUS, netStatusHandler );
soChat.addEventListener( AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler );
soChat.addEventListener( SyncEvent.SYNC, sharedObjectSyncHandler );
soChat.client = this;
soChat.connect( nc );
soChat.send( “getName” );
}
public function getName():void
{
trace( “getName: ” + txtUser.text );
soChat.setProperty(”key”,txtUser.text);
}
public function newName(str:String):void
{
arr.push(str);
soChat.setProperty(”arr”,arr);
con = new ArrayCollection(arr);
}
private function sharedObjectSyncHandler( event:SyncEvent ):void
{
trace( “sharedObjectSyncHandler:code: ” + event.changeList );
arr.push(event.target.data.key);
con = new ArrayCollection(arr);
}
private function netStatusHandler( event:NetStatusEvent ):void
{
trace( “netStatusHandler:code: ” + event.info.code );
}
private function asyncErrorHandler( event:AsyncErrorEvent ):void
{
trace( “asyncErrorHandler:code: ” + event.error );
}
]]>
</mx:Script>
<mx:TextInput id=”txtUser” horizontalCenter=”1″ verticalCenter=”-109″/>
<mx:Button click=”getName()” label=”Button” horizontalCenter=”0″ verticalCenter=”-53″/>
<mx:List id=”listView” height=”203″ dataProvider=”{con}” verticalCenter=”68″ horizontalCenter=”0″></mx:List>
</mx:Application>