HTTP协议 库是mysql 游戏退出时无法发送请求(比如直接断电)给服务器
有什么途径能得到用户【退出游戏】这个行为的时间点呢?

解决方案 »

  1.   

    php游戏?前后端用什么写的
      

  2.   

    http协议设计的初衷就是轻量高效,一来一回瞬间搞定不再纠缠,keep-alive也只是照顾照顾页面上的小文件下载
    基于http协议的游戏,我个人认为不存在用户断电后服务器能瞬间收到消息的办法,只能变向去判断最后一次动作的时间
      

  3.   

    或者用socket来连,这样就实时了,但真的有必要吗?看需求。
      

  4.   

    只要用户不点击【退出游戏】,你就不可能知道这个行为的时间点
    但是你能知道用户最后在线的时间点(自该时间点起,用户“消失”了)
    所以你不可能知道用户的非正常退出(但在 HTTP 会话期间是可以的)即便是使用 WebSocket 协议,那也只能在服务器端发起的轮询中发现用户不在了
    但也不能知道断线的准确时间
      

  5.   

    连接数没法得到是哪个用户退出游戏的吧 
    我需要知道
    1是哪个玩家
    2在几点几分几秒掉线下线的1. 哪个玩家,可以以他的登录ID为准。
    2. 下线时间,以点击“退出”的时间为准,如果他是直接关闭了网页,可以记录 session 失效的时间。没有别的好办法。
      

  6.   

    非常希望知道 用什么得知用户最后的在线时间的 
    我的session定义了3小时的生命周期 即便改成较短的时间得到的时间点也不甚准确吧
    除了session 还有哪个途径能得知他消失了么(需要知道消失的是哪个人 而非减少了一个连接数)
      

  7.   

    连接数没法得到是哪个用户退出游戏的吧 
    我需要知道
    1是哪个玩家
    2在几点几分几秒掉线下线的1. 哪个玩家,可以以他的登录ID为准。
    2. 下线时间,以点击“退出”的时间为准,如果他是直接关闭了网页,可以记录 session 失效的时间。没有别的好办法。
    有个问题 1 我通过看mysql的连接数只能得到现在连接了多少用户 没法得知他们都是哪个playerid2 用户没有点击退出这个操作(比如直接断电) 3session的失效时间需要定义比较长的时间(可以想象成 游戏允许挂一会儿机) 所以session的方法没法准确知道他几点下线的(比如 在session失效之前用户又登陆了)
      

  8.   

    socket监听redis队列,可完美解决
      

  9.   

    连接数没法得到是哪个用户退出游戏的吧 
    我需要知道
    1是哪个玩家
    2在几点几分几秒掉线下线的1. 哪个玩家,可以以他的登录ID为准。
    2. 下线时间,以点击“退出”的时间为准,如果他是直接关闭了网页,可以记录 session 失效的时间。没有别的好办法。
    有个问题 1 我通过看mysql的连接数只能得到现在连接了多少用户 没法得知他们都是哪个playerid2 用户没有点击退出这个操作(比如直接断电) 3session的失效时间需要定义比较长的时间(可以想象成 游戏允许挂一会儿机) 所以session的方法没法准确知道他几点下线的(比如 在session失效之前用户又登陆了)1.查看 mysql 的连接数,肯定是不行的,如果你的应该使用了连接池中,得到的数据更是不准确。
    2.用户没有点击退回操作,只能以他的 session 为准。
    3.session 失效的话,可以用这个时间,减去你的失效时长,就可以得到一个相对准确的数。