前面做的那个是单对单聊天室,其原理是每个连接到此服务的人都会被服务器记录在一个HashMap里,并且具有一个唯一的id。聊天的时候呢,向服务器传递2个参数(to_id,msg),然后服务器找到相应的连接,调用客户端函数,并且把(from_id,msg)传递过去,这样实现的。在线用户列表原理也类似,每次有人连接/断开都会激活服务器事件,调用客户端函数刷新列表。
这样子来做多人聊天不是不可以,不过当同时在线人数比较多的时候,效率很低下;而且,在线游戏里这样也是不现实的,因此,我们最好采用专有的sharedObject来做。
中文资料很少、公开的代码也很少、官方例子里的代码架构很复杂,于是乎研究效率不高,不过终归还是有所突破的,因为google上搜索“red5 sharedobject 服务器端代码”很多结果指向:冰山上的播客 ,那么我就从其中提供的有限的代码入手吧。首先我知道了,so是red5的一项基本应用(也是其他几乎所有流媒体服务器的基本功能),也就是说直接调用功能类ApplicationAdpter就可以实现需要的功能;其次我将其中的代码进行修改,运行通过。
然后就需要在前面的基础上,将在线列表改成so来实现,并且将多人聊天功能添加上,并用so来实现。
这个时候我发现自己需要一个测试工具来监视服务器状态,想了半天,突然一拍脑门,就用1对1聊天就可以了嘛,把原先的接收到客户端请求调用目标客户端程序改一下,事件触发就调程序返回状态就可以了。
现在流程变成这样:
[登录]
客户端so 连接 服务器
服务器端更新so
客户端自动同步后刷新在线列表
[聊天]
客户端生成对象
so改变
通过服务器同步到其他客户端
接下来便是实现了,稍候补奉上。
分享到:
相关推荐
为了深入了解这个例子,你可以查阅“flex shareobject.txt”文件,这可能包含了关于如何在Flex中创建和使用SharedObject的代码示例,以及如何配置Red5服务器来支持多人聊天的详细步骤。通过学习这份文档,你可以理解...
它支持多种协议,如RTMP(Real-Time Messaging Protocol)用于实时音视频流,以及Flash Player的共享对象(SharedObject)服务,用于实现客户端和服务器之间的低延迟数据交换。在多人聊天室中,Red5是核心的后台处理...
【描述】"FMS+AS3.0多人聊天室源文件下载"说明我们可以获取到实现这一功能的完整源代码。这意味着开发者或学习者可以深入研究代码结构,理解其工作原理,并根据需要进行自定义修改或扩展。ActionScript 3.0是Flash...
`SharedObject` 类则用于在多个客户端之间共享数据,这在多人聊天场景下尤为重要。通过监听 `NetStatusEvent.NET_STATUS` 事件,可以实时监控网络连接状态,确保程序在连接成功或失败时做出适当响应。 #### 知识点...
而Flash Communication Server(FCS)则是Adobe推出的一种服务器端技术,专门用于实现Flash客户端之间的实时通信,如音视频聊天、多人协作游戏等。 在开发基于Flash Communication的在线游戏时,首先需要了解的是...
每个用户登录后,其在线状态会更新到SharedObject中,这样所有客户端都能实时获取到当前在线用户的信息。这种方式提高了效率,减少了服务器的负担,因为数据交换主要在客户端之间进行。 总结来说,该案例旨在通过...
此外,案例开发还包括了如何创建可交互的FMS连接、基于FMS的流媒体播放程序、在线视频录制与回放以及如何利用远程共享对象实现多人实时在线聊天的详细步骤。这些系列文章深入浅出地讲解了从零开始构建这样一个系统的...
这个实例讲解了如何在FMS中建立和管理SharedObject,实现用户数据的存储和同步,这对于多人在线游戏或协作应用至关重要。 3. **RecordStream**: 记录流功能允许用户捕获并存储来自摄像头或麦克风的实时流媒体内容。...
SharedObject允许多个客户端共享数据,非常适合实现聊天室、多人游戏等实时互动场景。它能够跨多个会话持久化数据,提高用户体验。 #### SoapCallObject 和 SoapFaultObject 这些对象用于处理SOAP(Simple Object ...
SharedObject则提供了客户端和服务器间的数据共享机制,特别适用于实现游戏中的同步操作。 编写第一个程序包括创建服务器端和客户端代码。服务器端通常用Java编写,实现所需的服务接口;客户端代码则采用...
1. **SharedObject介绍**:共享对象是一种存储数据的方式,可以在不同的客户端之间共享。 2. **游戏中移动同步的原理和简单实现**:通过共享对象可以实现实时数据同步,例如游戏角色的位置信息更新。 #### 五、...
Flex与.NET互操作的核心在于 FluorineFx.Net...这对于需要实时更新数据的多人在线游戏、聊天室或协作应用等场景特别有用。FluorineFx.Net 提供了一种强大而灵活的框架,使得跨平台的富互联网应用程序开发变得更加容易。
3. **编程接口**:重点介绍ActionScript 3.0的API,包括NetConnection、NetStream、SharedObject等类的使用,这些API允许开发者控制媒体流、处理用户交互和数据交换。 4. **媒体管理**:解释如何发布、管理和控制...
在AS3中,可以使用`NetConnection`和`NetStream`类与FMS建立连接,并通过`RemoteObject`或`SharedObject`类进行数据交换。 在【压缩包子文件的文件名称列表】中,"flash+FMS斗地主游戏源程序"可能包含了以下部分: ...
##### 共享对象 (SharedObject) 共享对象允许在多个客户端之间共享数据。这对于构建交互式应用程序非常有用,例如在线聊天室或多人游戏。 - **数据同步**:实现了数据的实时同步,确保所有客户端都能获取最新的...