问题描述:有一件商品,限量发售(每天8点整发售),8点前购买按钮不可点击,且查看源代码也看不到按钮点击后提交的地址。到8点后购买按钮自动变成可点击状态,并给按钮添加点击事件。开始想法是用js检测客户端时间,如果到8点,往服务器发送请求,刷新页面。但用户是可以随时随便设置时间的,所以这么做不太好。现在想着用websocket,服务器用一个线程检测当前时间是否到8点整,到8点就发送广播。
不知道有什么更好的方法没。

解决方案 »

  1.   

    8点前,按钮不可点击,是不可靠的处理方式,8点前的提交服务器拒绝才是根本不用通知用户,用户喜欢抢购就会不断刷新页面,让按钮有效。做好服务器时间设置,把NTP服务(客户端)跑起来,做时间同步
      

  2.   

    先说服务端
    放一个a.js,js里面有真实的抢购地址,服务器到8点前,js不存真实的抢购地址。再说客户端
    页面加载a.js时,后面加个随机数字比如a.js?v=2345522这样保证用户刷新页面能取到最新的js。按钮点亮有两种途径可以把按钮变量
    1. 时间到8点后刷新页面,服务器加载含有真实抢购地址的js,点亮按钮同时附上真实抢购地址。
    2. 客户端时间到8点后,取服务器取最新的js,根据拿到的js决定是否点亮按钮。(如果服务器每到8点,就算拿到js也得不到抢购地址,无法点亮按钮)这样可以保证服务器的压力最小。