• Flash Media Server (FMS) 用户验证与计费设计


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

    main.asc 代码
    //Flash客户端连接FMS服务器后执行
    application.validate = function(data,p_client){
    p_client.s
    = new Date();//记录首次访问时的系统时间。
    p_client.key = data;//用户凭证,我在这里面放的是一段加密凭证,由Flash从客户端提交
    var my_lv = new LoadVars();
    my_lv.onLoad
    = function( success )
    {
    if(success)
    {
    if(this.key)
    {
    application.acceptConnection(p_client);
    }
    else
    {
    application.rejectConnection(p_client);
    }
    }
    else
    {
    application.rejectConnection(p_client);
    }
    };
    my_lv.load(
    "http://xxx.com/validate.aspx?data=" + p_client.key + "&c=" );//通过这个页面解密
    }

    //Flash客户端断开FMS服务器后执行
    application.disconnect = function(p_client){
    var c = Math.round((new Date() - p_client.s)/1000);//这里是为了计算连接的秒数
    var my_lv = new LoadVars();
    my_lv.onLoad
    = function( success )
    {
    //需要FMS处理的代码
    };
    my_lv.load(
    "http://xxx.com/validate.aspx?data=" + p_client.key + "&c=" + c +"&e=");//C 为客户端连接的秒数
    }



    application.onConnect
    = function(p_client,p_key)
    {
    application.validate(p_key,p_client);
    }

    application.onDisconnect
    = function(p_client)
    {
    application.disconnect(p_client);
    }


    //为了防止FMS服务或WEB服务出现异常,采用轮询的方式主动计费,以防止客户端出现未计费现象
    //(这个方法的原则是保证FMS主动检测时间到客户端开始时间的费用已计算)
    online
    = function () {
    for (var i = 0; i<application.clients.length; i++) {
    if (application.clients[i].ping()) {
    //如果客户端还存在连接
    var my_lv = new LoadVars();
    var server_time = new Date();
    my_lv.load(
    "http://xxx.com/validate.aspx?data=" + application.clients[i].key + "&live=" + server_time +"&e=");//
    } else {
    application.disconnect(application.clients[i]);
    }
    }
    };
    setInterval(online,
    6000);//检测时间间隔根据具体情况而定,时间越短,服务请求越多
  • 相关阅读:
    sql server 存储过程分隔split
    sql server 存储过程、事务,增删改
    jquery ajax 参数可以序列化
    Pycharm连接gitlab
    gitlab的搭建和linux客户端的连接
    jenkins的搭建和使用
    svn服务器及客户端安装使用
    python2 和python3共存下问题
    Codecademy For Python学习笔记
    类编写的细节
  • 原文地址:https://www.cnblogs.com/stangray/p/1692918.html
Copyright © 2020-2023  润新知