SharedObject多人聊天

前面做的那个是单对单聊天室,其原理是每个连接到此服务的人都会被服务器记录在一个HashMap里,并且具有一个唯一的id。聊天的时候呢,向服务器传递2个参数(to_id,msg),然后服务器找到相应的连接,调用客户端函数,并且把(from_id,msg)传递过去,这样实现的。在线用户列表原理也类似,每次有人连接/断开都会激活服务器事件,调用客户端函数刷新列表。

这样子来做多人聊天不是不可以,不过当同时在线人数比较多的时候,效率很低下;而且,在线游戏里这样也是不现实的,因此,我们最好采用专有的sharedObject来做。

中文资料很少、公开的代码也很少、官方例子里的代码架构很复杂,于是乎研究效率不高,不过终归还是有所突破的,因为google上搜索“red5 sharedobject 服务器端代码”很多结果指向:冰山上的播客 ,那么我就从其中提供的有限的代码入手吧。首先我知道了,so是red5的一项基本应用(也是其他几乎所有流媒体服务器的基本功能),也就是说直接调用功能类ApplicationAdpter就可以实现需要的功能;其次我将其中的代码进行修改,运行通过。

然后就需要在前面的基础上,将在线列表改成so来实现,并且将多人聊天功能添加上,并用so来实现。

这个时候我发现自己需要一个测试工具来监视服务器状态,想了半天,突然一拍脑门,就用1对1聊天就可以了嘛,把原先的接收到客户端请求调用目标客户端程序改一下,事件触发就调程序返回状态就可以了。

现在流程变成这样:

[登录]
客户端so 连接 服务器
服务器端更新so
客户端自动同步后刷新在线列表

[聊天]
客户端生成对象
so改变
通过服务器同步到其他客户端

接下来便是实现了,稍候补奉上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值