其实 SharedObject 用法很简单,客户端声明一个 _so,然后服务器端随便开个应用——比如范例里的SOSample,其实直接指向了ApplicationAdpater——连接起来,侦听 SyncEvent.SYNC 事件,就可以了。
结果我仍然花了1天多时间才弄好,而且最后都不知道哪儿出错了。现在虽然程序运行正常,但是我还是不知道原先错在哪里……
在这个应用中,我设计了两个slot(共享对象的一个概念,其实就是一个变量):String onLineList,这个字符串用来存储在线列表;Object msg,这个对象用来存储发言,其中又有3个属性userid、command、msg,其含义如其名。
某客户端连接服务器成功后,会调用服务器的 refreshOnlineList 方法,遍历所有的客户端后生成字符串,更新到so的onLineList里,然后就回同步到所有客户端。某客户端断开也是一样。
发言时,客户端直接更新so,生成msg对象并赋给so,然后自动通过服务器同步到所有客户端,完成一次发言。
运行通过,测试了下没什么问题。不过因为公司没有对外的red5服务器,所以demo只能对内。那么放一点截图吧,虽然比较丑……
既然说这个东西很简单那为什么会弄这么久呢?事情多当然是一个原因,还有一个原因就是莫名其妙的bug。
首先我google到一些资料,说as3的Array对应java的LinkedHashMap,所以我上去就直接生成一个map然后赋给服务器端的so,然后就死循环,java在cpu占用100%,直到我关闭它。反复尝试之后,决定还是用字符串切割来做。
然后我想到,服务器端有个appConnect事件,在客户端连接时触发,把so更新直接放在这里,省去客户端连接完成后再调用这步,可是结果一旦所有客户端都断开,服务就死了。Jim怀疑是session的问题,但是我把so改成persistent(永久型)也不行。
最后,每次appConnect的时候,用来存客户端的map都已经更新了,但是我遍历去取得时候总得不到当前连接。但是等so也连接完毕再取就没问题了。
三座大山,哎,于是只有从旁边绕过去,还好效率上没有什么太大的差异。近期太忙了,今儿一天就8个专题,算上蜂鸟包版就9个,实在没时间慢慢琢磨,先这样继续推进吧,说不定哪天正确答案就自己蹦出来了呢。
下一步:stream
stream即流,显然是流媒体的重要组成部分。视频/音频的播放都依赖它存在,很多独特的应用也很突出,比如:视频会议,语音聊天等。下一步就把它的应用琢磨一下。
分享到:
相关推荐
为了深入了解这个例子,你可以查阅“flex shareobject.txt”文件,这可能包含了关于如何在Flex中创建和使用SharedObject的代码示例,以及如何配置Red5服务器来支持多人聊天的详细步骤。通过学习这份文档,你可以理解...
【标题】"简易聊天室flash多人聊天 FMS实现"揭示了这个项目的核心是构建一个基于Flash的多人在线聊天系统,采用FMS(Flash Media Server)作为后台技术来实现实时的通信功能。Flash是一种广泛应用于网页上的多媒体...
AS3 SharedObject 是ActionScript 3中的一个关键组件,它允许在Flash应用程序中实现本地数据存储,特别是对于处理用户设置、游戏进度或者轻量级的数据持久化非常有用。本小例子将带你深入理解如何利用SharedObject...
Flex多人多房间聊天室是一种基于Adobe Flex技术和Red5服务器实现的实时在线交流平台。这个系统允许用户进入不同的房间进行互动沟通,提供了丰富的社交体验。在本文中,我们将深入探讨Flex和Red5技术以及如何利用...
在这些情况下,使用SharedObject类就可以在本地进行数据存储和处理,无需搭建复杂的网络数据处理系统。 SharedObject类是Flash中用于数据处理的一个非常强大的类,它的功能类似于网页中的Cookie,可以以文件的形式...
有时候会碰到cuda报错,OSError: libcudart.so.10.0: cannot open shared object file: No such file 原因是cuda动态链接库没有链接上。 解决方法如下: cuda10.0: sudo ldconfig /usr/local/cuda-10.0/lib64 cuda...
共享对象(SharedObject)在Flash中是一个强大的功能,它允许在多个客户端之间实现数据的实时共享,同时支持存储在客户端本地或者远程服务器上。这个特性使得开发者能够创建类似实时通信的应用,比如聊天室、在线...
在创建在线聊天室时,两个关键的Flex组件是NetConnection对象和SharedObject对象。NetConnection对象负责建立和管理客户端与服务器之间的连接,它是实时通信的基础。通过创建NetConnection实例并调用其connect方法,...
自己动态库映射地址不一样
【标题】"FMS聊天室+AS3.0"是一个基于Adobe Flash Media Server (FMS) 和ActionScript 3.0开发的多人在线聊天室应用。这个标题表明了该源代码是用于创建实时、交互式的多用户通信环境,让用户能够通过网络进行文字或...
- **SharedObject**: 在Flash中,SharedObject是AS3(ActionScript 3)提供的一个类,用于在客户端存储小量的数据。它类似于浏览器的Cookie,但存储的容量更大,且可以存储复杂的数据类型,如对象和数组。 2. **...
OSError: libcusparse.so.11: cannot open shared object file: No such file or directory 搜索全网,也没找到解决方案。最快解决方案如下: 1、在 /home/user/anaconda3/lib/ 中放入缺少的 libcusparse.so.11 文件...
SOLReader is a decompiler for the .sol files used by flash to save its own cookie (the SharedObjects)
ActionScript 3.0的SharedObject可以用来存储本地数据,但安全敏感的信息应存储在服务器端。 2. 实时性:为了提高用户体验,可以实现心跳机制,定时发送空消息以保持连接状态。还可以使用WebSocket协议提供更低延迟...
另外,虽然在大规模聊天室系统中,服务器端存储和管理用户消息更为常见,但在简单应用中,也可以利用SharedObject实现有限的客户端数据共享,例如存储最近的聊天记录。 要配置Flex与.NET的聊天室,首先需要在Flex中...
linux系统依赖 php依赖 libzip依赖 libzip.so.5: cannot open shared object file
libXp.so.6: cannot open shared object file: No such file or directory [oracle@dbadb1 ~]$ ls -ld /usr/lib/libXp.so.6 ls: /usr/lib/libXp.so.6: No such file or directory [root@dbadb1 zhuxu]# rpm -ivh...
ubuntu报错:libg2c.so.0:cannot open shared object file: no such file or directory/wrong ELF class(已解决)-附件资源
标题“Test for globals in shared object from static lib.”涉及的是在Linux环境下,如何在共享对象(.so文件)中测试从静态库(.a文件)导入的全局变量。这个实验是针对一个CSDN论坛帖子的实践操作,目的是理解在...
- **数据存储**:服务器端可能需要持久化存储聊天记录,可以选择SQLite数据库或Shared Preferences,但更复杂的系统可能需要远程数据库如MySQL或NoSQL解决方案。 3. 实时通信: - **WebSocket**:为了实现双向...