FMS项目实例–在线客服系统(fms脚本)
接着上一篇,下面我们来实现asc脚本。服务器逻辑是整个系统的核心,既要维护客户方信息,也要维护服务方信息,并且管理他们的关联关系(1对多的关系)。可以用下面的图来表示他们的关系:
转化成面向对象的方式,可以认为是: class Server{Clients:{client1Name:clientObj,client2Name:clientObj}}。actionscript是动态语言,所以这里能很方便的添加删除用户,实现从客服人员到用户的映射关系。当然我们还要考虑到从用户到客服人员的映射,这就唯一了(一个用户只对应一个客服人员):class Client{ServerName:ServerObj}。
理清了关系后,下面我们还要考虑一下别的属性,比如name。
噢差点忘了一个需求,验证客服人员的身份,这些信息是在服务端可配置的。
代码:main.asc
下面扯些技术上的东西,main.asc是事件驱动的,全局域有四个事件处理函数:
- application.onAppStart — 实例初始化
- application.onAppStop — 实例被销毁
- application.onConnect — 某client请求连接
- application.onDisconnect — 某client断开
当某个客户端请求,FMS端就会新建一个程序实例(就客服系统来讲,就一个默认的实例程序,可以把实例看成一个聊天的房间,不要认为应该一个客服人员一个实例,因为客服人员之间也是要交换信息的,所以最好共用一个实例)载入内存,onAppStart便被调用。当然最主要的还是onConnect和onDisconnect,处理连接请求,这里会做一些判断,初始化的工作,建立监听器,处理客户端的方法调用(netconnection.call…)等等,其它基本上跟actionscript差不多。
下面是些需要注意的地方,也是可能出错的地方:
- asc里的变量不能声明类型(我也不知道为啥,声明就错了),方法不能声明返回类型
- 声明变量一定得有var
- application.rejectConnection方法支持第二个参数,说明拒绝原因(一般我就返回字符串)
- 调用客户端的方法必须在application.acceptConnection之后(很好理解嘛,先要建立连接)
下回接着讲客户端方面的开发。


浙公网安备 33010602011771号