前面做的那个是单对单聊天室,其原理是每个连接到此服务的人都会被服务器记录在一个HashMap里,并且具有一个唯一的id。聊天的时候呢,向服务器传递2个参数(to_id,msg),然后服务器找到相应的连接,调用客户端函数,并且把(from_id,msg)传递过去,这样实现的。在线用户列表原理也类似,每次有人连接/断开都会激活服务器事件,调用客户端函数刷新列表。
这样子来做多人聊天不是不可以,不过当同时在线人数比较多的时候,效率很低下;而且,在线游戏里这样也是不现实的,因此,我们最好采用专有的sharedObject来做。
中文资料很少、公开的代码也很少、官方例子里的代码架构很复杂,于是乎研究效率不高,不过终归还是有所突破的,因为google上搜索“red5 sharedobject 服务器端代码”很多结果指向:冰山上的播客 ,那么我就从其中提供的有限的代码入手吧。首先我知道了,so是red5的一项基本应用(也是其他几乎所有流媒体服务器的基本功能),也就是说直接调用功能类ApplicationAdpter就可以实现需要的功能;其次我将其中的代码进行修改,运行通过。
然后就需要在前面的基础上,将在线列表改成so来实现,并且将多人聊天功能添加上,并用so来实现。
这个时候我发现自己需要一个测试工具来监视服务器状态,想了半天,突然一拍脑门,就用1对1聊天就可以了嘛,把原先的接收到客户端请求调用目标客户端程序改一下,事件触发就调程序返回状态就可以了。
现在流程变成这样:
[登录]
客户端so 连接 服务器
服务器端更新so
客户端自动同步后刷新在线列表
[聊天]
客户端生成对象
so改变
通过服务器同步到其他客户端
接下来便是实现了,稍候补奉上。
分享到:
相关推荐
基于red5的多人聊天,使用了sharedobject,此例子仅用于对不了解sharedobject的人做一个入门的例子
有时候会碰到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...
#资源达人分享计划#
AS3 SharedObject 本地通讯 小例子!以前很久的时候参考网上例子学习的!刚接触本地通讯的童鞋可以试试。
自己动态库映射地址不一样
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)
shared Object对象相当强大,他提供了在多个客户端实时数据共享,并且可以存储在客户端或远程服务器。可以把本地共享对象比作cookies,把远程共享对象看作实时的数据传输设备。
flex + red5 开发聊天室,即时聊天采用 ShareObject.
ubuntu报错:libg2c.so.0:cannot open shared object file: no such file or directory/wrong ELF class(已解决)-附件资源
用于单机游戏中的 进度保存。 SharedObject 望有帮助
针对以下帖子的实验(Linux版): http://topic.csdn.net/u/20100317/09/1cb8411a-74a9-4f05-ae5e-1e068b06654c.html
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...
本编辑器是我自己做的,最初是因为玩一个flash做的游戏(金庸群侠传2),感觉升级太慢,想到要修改其保存的属性值,之后就有了此作。原文件和详细说明都打包在里面! 解压密码:scriptfan@qq.com
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory [root@SnsWeb ~]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --log...
tensorflow.python.framework.errors_impl.NotFoundError: libnccl.so.2: cannot open shared object file: No such file or directory。 根据报错的内容,我们知道,缺少一个文件,libnccl*** 类似的东西,看到nccl...
cannot load library 'libcairo.so.2': libcairo.so.2: cannot open shared object file: No such file or directory cannot load library 'libcairo.2.dylib': libcairo.2.dylib: cannot open shared object file: ...
android-sdk-NDK18.1.5063045.rar
MYSQL之 error while loading shared libraries: libtinfo.so.5: cannot open shared objectfile: No such f-附件资源