欢迎光临
羽柴|鬼铃'blog
QQ:34284682 | 251055853
技术高级群: FMS: 71695402 | 游戏开发:48295089
[开源]06年开发的FMS 在线换装聊天室游戏
作者:admin 日期:2010-06-30
【注意】AS3 与FMS call的失败原因之—参数不全
作者:admin 日期:2010-06-19
[附图]用户列表的实现纠正[新手必看]
作者:admin 日期:2010-06-12
因为看到有人在群里面讨论用户列表的实现, 虽然一个简单的用户列表。但说法各异,在此就写一个简单的思路教程吧。推荐FMS应用的新手必看
用户列表,相信很多应用都会用到。像FMS经常做的聊天室, 网络游戏都有用户列表。虽然用户列表看似简单,但实现却不简单。 在此我先把错误的思路及方法说下吧
很多新手做用户列表都是用非常简单的方式。 建立一个数组 连入用户时.push这个数组并且把这个数组广播给客户端,断开用户的时候。找到数组中的位置splice掉。 然后又把这个数组广播给客户端。 这个方法虽然能行,但却是大错特错的方法。除非是小应用还可以用下,用这方法别想做大应用。问题在哪? 我下面来分析
问题就出在数据量上面,这样来考虑。如果是一个2000人在线的应用,那这个用户列表就相当于长度2000的数组。如果随便1个人进进出出就相当于广播了2000次左右。如果这个数组记录的仅仅是人名还问题不大,但如果还有其他数据。那可想而知...一进一出就刷2000人的长度2000的数据量,是多么可怕的数据量....相当于发送了2000*2000的数据量
那如何解决呢?就是建立用户列表映射。看以下思路. 同样还是2000人的应用
服务端同样用数组。 当用户登录时只向该用户发送长2000数组(在此分清,是只向登录者这1个人发送并不是向2000人广播这数组) 这样就把用户列表映射到登录者客户端。服务端push后这时候再广播登录者信息(注意,在此指的是广播登录者的单独的单元信息比如用户名而不是广播整个数组。) 客户端在收到这个单独信息的时候也做push。 当用户退出的时候服务端做splice处理,处理完后记录splice的数组指针即可。 然后广播这个指针。客户端同步映射根据这个指针做splice处理。(而不是把整个数组的广播扔给客户端) 这就是整个映射过程。
用户列表,相信很多应用都会用到。像FMS经常做的聊天室, 网络游戏都有用户列表。虽然用户列表看似简单,但实现却不简单。 在此我先把错误的思路及方法说下吧
很多新手做用户列表都是用非常简单的方式。 建立一个数组 连入用户时.push这个数组并且把这个数组广播给客户端,断开用户的时候。找到数组中的位置splice掉。 然后又把这个数组广播给客户端。 这个方法虽然能行,但却是大错特错的方法。除非是小应用还可以用下,用这方法别想做大应用。问题在哪? 我下面来分析
问题就出在数据量上面,这样来考虑。如果是一个2000人在线的应用,那这个用户列表就相当于长度2000的数组。如果随便1个人进进出出就相当于广播了2000次左右。如果这个数组记录的仅仅是人名还问题不大,但如果还有其他数据。那可想而知...一进一出就刷2000人的长度2000的数据量,是多么可怕的数据量....相当于发送了2000*2000的数据量
那如何解决呢?就是建立用户列表映射。看以下思路. 同样还是2000人的应用
服务端同样用数组。 当用户登录时只向该用户发送长2000数组(在此分清,是只向登录者这1个人发送并不是向2000人广播这数组) 这样就把用户列表映射到登录者客户端。服务端push后这时候再广播登录者信息(注意,在此指的是广播登录者的单独的单元信息比如用户名而不是广播整个数组。) 客户端在收到这个单独信息的时候也做push。 当用户退出的时候服务端做splice处理,处理完后记录splice的数组指针即可。 然后广播这个指针。客户端同步映射根据这个指针做splice处理。(而不是把整个数组的广播扔给客户端) 这就是整个映射过程。









