测试手机:Redmi K70 至尊版 测试微信:Version 8.0.53 测试系统:澎湃 2.0.13.0.VNNCNXM、Android 15
小程序切后台息屏挂起5分钟后发送请求,服务器接收不到请求?小程序使用web-view打开测试页面,切后台息屏挂起5分钟后再次打开小程序,点击按钮发送请求,服务器接收不到请求 小程序APPID:wx0c8626ebb206cb1e 测试微信号:danxiabing 日志上传时间:2025-01-10 17:55 下面是测试过程和测试代码: 这是打开测试页面,没有切后台息屏挂起5分钟时,点击按钮正常发送请求接收响应的情况 [图片] 这是打开测试页面,切后台息屏挂起5分钟后,点击按钮发送请求的情况,120秒仍然没有收到服务器响应 [图片] 这是服务器接口C#代码 [HttpGet] public string GetHomeMallList7() { var s = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); Utilities.WriteLog(s);//服务器日志,正常时有记录,异常是没有记录,能证明是服务器没有接收到请求,而不是客户端没接收到 return s; } 这是测试页面HTML代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body style="font-size:40px;"> <a onclick="clickFn(this);this.onclick=''" style="font-size:1em">点击请求服务器</a> <p id="start"></p> <p id="ing"></p> <p id="end"></p> <script> var start = null; var end = null; var num = 0; var timer = null; function clickFn() { //记录客户端发送请求时间 start = new Date(); document.getElementById("start").innerHTML = "客户端发送请求时间:" + DateTimeToString(start); //定时器,证明脚本还活着 var ing = document.getElementById("ing"); timer = setInterval(function () { ing.innerHTML += (num += 10) + "秒过去仍然没有返回,当前时间:" + DateTimeToString(new Date()) + "<br/>"; }, 10000); //发送请求 fetch('/API/CWeb/GetHomeMallList7') .then(response => { //清除定时器 clearInterval(timer); timer = null; //记录客户端接收服务器响应时间 end = new Date(); document.getElementById("end").innerHTML = "客户端接到响应的时间:" + DateTimeToString(end) + ",时间差:" + (end - start) + "毫秒"; if (response.ok) { return response.json(); } throw new Error(); }) .then(data => { //记录服务器返回的时间(服务器接收到客户端请求的时间) data = new Date(data); ing.innerHTML += "服务端接到请求的时间:" + DateTimeToString(data) + ",时间差:" + (data - start) + "毫秒<br>备注:客户端和服务端有时间差,测试前需确认时间差<br> 经测试,测试手机和服务器时间差为2100毫秒左右"; }) .catch(error => { document.getElementById("end").innerHTML = "失败返回"; }); } //时间转字符串 function DateTimeToString(time) { const year = time.getFullYear(); const month = (time.getMonth() + 1).toString().padStart(2, '0'); const day = time.getDate().toString().padStart(2, '0'); const hours = time.getHours().toString().padStart(2, '0'); const minutes = time.getMinutes().toString().padStart(2, '0'); const seconds = time.getSeconds().toString().padStart(2, '0'); const milliseconds = time.getMilliseconds().toString().padStart(3, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`; } </script> </body> </html>
01-10