小程序使用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>
正常,除非是播放背景音乐和后台定位API,其他的都不支持挂起常驻后台。
测试手机:Redmi K70 至尊版
测试微信:Version 8.0.53
测试系统:澎湃 2.0.13.0.VNNCNXM、Android 15