·您当前的位置:首页 > 技术教程 > Rtmp技术 >

[AS3]AS3下FMS用户计费设计源代码示例

时间:2013-01-27 00:10CuPlayer
一个B/S的用户在线计费系统代码.用到Flash Media Server作服务器,使用rtmp协议来保持客户端的连接。实现了被动计费(从客户端开始连接到断开连接的时间)和主动计费

一个B/S的用户在线计费系统代码.用到Flash Media Server作服务器,使用rtmp协议来保持客户端的连接。
实现了被动计费(从客户端开始连接到断开连接的时间)和主动计费(从客户端开始连接到服务器主动验证客户端的连接时间)两种方式
需要保证Web服务端与FMS的链接安全,这个比较容易实现,IP策略就可以。也可以在FMS向Web服务端提交验证的页面做一个来路检测。

main.asc 代码 //Flash客户端连接FMS服务器后执行

  1. application.validate = function(data,p_client){ 
  2. p_client.s = new Date();//记录首次访问时的系统时间。 
  3. p_client.key = data;//用户凭证,我在这里面放的是一段加密凭证,由Flash从客户端提交 
  4. var my_lv = new LoadVars(); 
  5. my_lv.onLoad = function( success ) 
  6. if(success) 
  7. if(this.key) 
  8. application.acceptConnection(p_client); 
  9. else 
  10. application.rejectConnection(p_client); 
  11. } else 
  12. application.rejectConnection(p_client); 
  13. }; 
  14. my_lv.load("http://cuplayer.com/validate.aspx?data=" + p_client.key + "&c=" );
  15. //通过这个页面解密 

//Flash客户端断开FMS服务器后执行

  1. application.disconnect = function(p_client){ 
  2. var c = Math.round((new Date() - p_client.s)/1000);//这里是为了计算连接的秒数 
  3. var my_lv = new LoadVars(); 
  4. my_lv.onLoad = function( success ) 
  5. //需要FMS处理的代码 
  6. }; 
  7. my_lv.load("http://xxx.com/validate.aspx?data=" + p_client.key + "&c=" + c +"&e=");
    //C 为客户端连接的秒数 
  1. application.onConnect = function(p_client,p_key) 
  2. application.validate(p_key,p_client); 
  3.  
  4. application.onDisconnect = function(p_client) 
  5. application.disconnect(p_client); 

//为了防止FMS服务或WEB服务出现异常,采用轮询的方式主动计费,以防止客户端出现未计费现象
//(这个方法的原则是保证FMS主动检测时间到客户端开始时间的费用已计算)

  1. online = function () { 
  2. for (var i = 0; i<application.clients.length; i++) { 
  3. if (application.clients[i].ping()) { 
  4. //cuplayer.com提示:如果客户端还存在连接 
  5. var my_lv = new LoadVars(); 
  6. var server_time = new Date(); 
  7. my_lv.load("http://xxx.com/validate.aspx?data=" +
  8.  application.clients[i].key + "&live=" + server_time +"&e=");// 
  9. } else { 
  10. application.disconnect(application.clients[i]); 
  11. }; 
  12. setInterval(online, 6000); 
  13. //检测时间间隔根据具体情况而定,时间越短,服务请求越多 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器