系统的PC端页面上了一个微信二维码支付的功能,涉及到一个问题,就是微信在手机上支付成功了,页面如果知道? 只有知道了,才能展示相应的后续交互。
一般来说,一脑子想出来的方案 要么“轮询后台”要么用websocket和后台交互。每秒轮询请求太过频繁,socket又需要后台人员从接触新技术。那么不谈如HTTP/2等或者采用其他后台推送技术,简单的ajax请求如果做到不错的效果呢?
后来就想到了一个用普通ajax请求完成的方法,就是前端询问后端该订单是否完成支付时,如果用户没有支付,不是立刻响应,而是hold住30s再返回没有支付。前端获取响应后立刻再进行一次请求,相当于把轮询间隔变长了。而用户在任何时候只要完成支付,后端立刻返回已支付,前端进行下一步交互。这样解决了请求过频增大服务器压力的问题。
当然有一些坑要避免,比如完全的停止请求循环的时机。
网友评论