聊天室的多种实现原理

用FMS做聊天室其实很简单,如果用组件。不到5分钟就能完成一个基本功能的聊天室了,但如果有各类需求,就需要自行开发了。
1 聊天记录问题:
一般分为3类
(1).不记录聊天内容
比较简单,通过Client发送内容来后,直接用 application.broadcastMsg 或call 反馈给其他用户
(2).暂时记录聊天内容,一段时间或条件后删除
根据记录内容的多少来确定,如果记录内容较少直接在服务端用变量来记录,如果内容较多则用SharedObject
(3).长久记录聊天内容
同样2种方法,采用SharedObject记录,或用File类也能达到目的

2 私聊和用户级分组
(1).私聊,其实也很简单。通过遍历 application.clients对象,根据自己的条件对其中的对象call
for (var i = 0; i<application.clients.length; i++) {
         if(application.clients[i].Name=="羽柴"){
                   application.clients[i].call("显示聊天",null,txt)
         }
}
//以上一个简单的例子表示,对用户名叫羽柴的 client进行私聊,只把发送的内容 call给羽柴显示。 其他人则收不到聊天内容

(2).分组
聊天室一般 分有管理员 用户 会员 或等等 据有特殊权限的用户组
实现方法:
先把所有人的权限拥有的功能定义成一个function 当登录的时候判断该用户属于的级别后,再为其添加该用户的function  这样就达成了管理员只有管理员的方法,而玩家无法调用管理员的function
之前见到网上有的例子,不论管理员或一般用户的所有方法都定义到Client里面。则
Client.聊天=function(){}
Client.踢人=function(){}
Client.表情=function(){} ....等等
只 是在客户端中 一般用户不调用罢了, 这样的做法是很错误的。 如果把所有的功能都添加到Client安全则是很差的,相信都知道flash 被反编译性是很高的,这样一旦客户端被反编了,知道了调用方法。那就相关于一般会员也具备了管理员的功能。正确的方法应该是分类式的把方法传入 如下:
application.onConnect = function(newClient, userName, userPsd,userClass,team) {    
           if(在此处根据自己的情况判断用户级别){
                      //如果是管理员,则添加管理员方法
              newClient.聊天=聊天
              newClient.踢人=踢人
                }else if(一般会员){
                      //如果是一般会员 添加一般会员的方法
              newClient.聊天=聊天
                }
};

function 聊天(){
     .....
}

function 踢人(){
     .....
}

//
//以上只是一个例子简示,从以上例子可以看到,当判断了是管理员权限的,则添加踢人和聊天的方法给该用户
如果只是一般用户的  则只添加聊天给他。这样就能做到,一般用户就算调用踢人  方法也是无效的。
//=====================================

/     转载:羽柴 鬼铃-blog  
//     www.ycflash.com/blog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值