`
wenbin151
  • 浏览: 32215 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

SharedObject多人聊天室完工

阅读更多

其实 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 基于red5的多人聊天

    为了深入了解这个例子,你可以查阅“flex shareobject.txt”文件,这可能包含了关于如何在Flex中创建和使用SharedObject的代码示例,以及如何配置Red5服务器来支持多人聊天的详细步骤。通过学习这份文档,你可以理解...

    简易聊天室flash多人聊天 FMS实现

    【标题】"简易聊天室flash多人聊天 FMS实现"揭示了这个项目的核心是构建一个基于Flash的多人在线聊天系统,采用FMS(Flash Media Server)作为后台技术来实现实时的通信功能。Flash是一种广泛应用于网页上的多媒体...

    AS3 SharedObject 本地通讯 小例子

    AS3 SharedObject 是ActionScript 3中的一个关键组件,它允许在Flash应用程序中实现本地数据存储,特别是对于处理用户设置、游戏进度或者轻量级的数据持久化非常有用。本小例子将带你深入理解如何利用SharedObject...

    flex多人多房间 聊天室

    Flex多人多房间聊天室是一种基于Adobe Flex技术和Red5服务器实现的实时在线交流平台。这个系统允许用户进入不同的房间进行互动沟通,提供了丰富的社交体验。在本文中,我们将深入探讨Flex和Red5技术以及如何利用...

    Flash的数据处理类SharedObject.pdf

    在这些情况下,使用SharedObject类就可以在本地进行数据存储和处理,无需搭建复杂的网络数据处理系统。 SharedObject类是Flash中用于数据处理的一个非常强大的类,它的功能类似于网页中的Cookie,可以以文件的形式...

    cuda报错 OSError: libcudart.so.10.0: cannot open shared object file: No such file

    有时候会碰到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...

    shared Object 用法

    共享对象(SharedObject)在Flash中是一个强大的功能,它允许在多个客户端之间实现数据的实时共享,同时支持存储在客户端本地或者远程服务器上。这个特性使得开发者能够创建类似实时通信的应用,比如聊天室、在线...

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

    在创建在线聊天室时,两个关键的Flex组件是NetConnection对象和SharedObject对象。NetConnection对象负责建立和管理客户端与服务器之间的连接,它是实时通信的基础。通过创建NetConnection实例并调用其connect方法,...

    shared object

    自己动态库映射地址不一样

    FMS聊天室+AS3.0

    【标题】"FMS聊天室+AS3.0"是一个基于Adobe Flash Media Server (FMS) 和ActionScript 3.0开发的多人在线聊天室应用。这个标题表明了该源代码是用于创建实时、交互式的多用户通信环境,让用户能够通过网络进行文字或...

    flash本地共享对象保存

    - **SharedObject**: 在Flash中,SharedObject是AS3(ActionScript 3)提供的一个类,用于在客户端存储小量的数据。它类似于浏览器的Cookie,但存储的容量更大,且可以存储复杂的数据类型,如对象和数组。 2. **...

    libcusparse.so.11

    OSError: libcusparse.so.11: cannot open shared object file: No such file or directory 搜索全网,也没找到解决方案。最快解决方案如下: 1、在 /home/user/anaconda3/lib/ 中放入缺少的 libcusparse.so.11 文件...

    SolReader Local Shared Object编辑器

    SOLReader is a decompiler for the .sol files used by flash to save its own cookie (the SharedObjects)

    聊天室(ActionScript 3.0实现)

    ActionScript 3.0的SharedObject可以用来存储本地数据,但安全敏感的信息应存储在服务器端。 2. 实时性:为了提高用户体验,可以实现心跳机制,定时发送空消息以保持连接状态。还可以使用WebSocket协议提供更低延迟...

    Flex +.net 聊天室

    另外,虽然在大规模聊天室系统中,服务器端存储和管理用户消息更为常见,但在简单应用中,也可以利用SharedObject实现有限的客户端数据共享,例如存储最近的聊天记录。 要配置Flex与.NET的聊天室,首先需要在Flex中...

    libzip.so.5

    linux系统依赖 php依赖 libzip依赖 libzip.so.5: cannot open shared object file

    linux 下libXp.so.6不能shared

    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(已解决)-附件资源

    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.

    标题“Test for globals in shared object from static lib.”涉及的是在Linux环境下,如何在共享对象(.so文件)中测试从静态库(.a文件)导入的全局变量。这个实验是针对一个CSDN论坛帖子的实践操作,目的是理解在...

    手机客户端C/S结构聊天室

    - **数据存储**:服务器端可能需要持久化存储聊天记录,可以选择SQLite数据库或Shared Preferences,但更复杂的系统可能需要远程数据库如MySQL或NoSQL解决方案。 3. 实时通信: - **WebSocket**:为了实现双向...

Global site tag (gtag.js) - Google Analytics