想知道为什么有的TG账号几个月不登录,刷新附近人,还能看到他的账号,正常情况下不是只会显示很短一短时间吗?
1条回答 默认 最新
- GPT_Pro 2023-02-23 03:56关注
该回答内容部分引用GPT,GPT_Pro更好的解决问题
TG账号几个月不登录,刷新附近人,还能看到他的账号,这是因为TG提供了一个在线状态的检测机制,其原理是向服务器发送一个心跳包,该心跳包会更新用户的“最后在线时间”。 如果用户不登录,该字段不会更新,因此,在刷新附近人时,仍然能够看到他的账号。TG也提供了一个在线状态的可视化显示,其原理是对服务器传回的“最后在线时间”进行处理,然后根据相应的时间差来计算出相应的在线状态。 例如,如果一个用户最后在线时间超过14天,就表示他已经离线了,此时在附近人列表中显示的是“14天前”。如果一个用户最后在线时间在3小时内,就表示他在线,此时在附近人列表中显示的是“3小时前”。
TG也提供了一个API,可以利用它来实时检测用户的在线状态信息。具体来说,可以使用 easyui 、 Iless 或 typescript 来开发一个检测用户在线时间差的 API 接口:
// easyui // 定义一个 API 用于检测用户在线时间差 function getUserOnlineTime(userId) { // 请求 TG 服务器 let url = /tg/api/getOnlineTime?userId=${userId} // 解析响应的数据 let data = JSON.parse(http.get(url)); // 计算出用户最后在线时间差 let onlineTime = Date.now() - data.lastOnlineTime; // 返回用户最后在线时间差 return onlineTime; }
// Iless // 定义一个 API 用于检测用户在线时间差 let getUserOnlineTime = (userId) => { // 请求 TG 服务器 let url = /tg/api/getOnlineTime?userId=${userId} // 解析响应的数据 let data = JSON.parse(http.get(url)); // 计算出用户最后在线时间差 let onlineTime = Date.now() - data.lastOnlineTime; // 返回用户最后在线时间差 return onlineTime; }
// typescript // 定义一个 API 用于检测用户在线时间差 function getUserOnlineTime(userId: string): number { // 请求 TG 服务器 const url = `/tg/api/getOnlineTime?userId=${userId}`; // 解析响应的数据 const data = JSON.parse(http.get(url)); // 计算出用户最后在线时间差 const onlineTime = Date.now() - data.lastOnlineTime; // 返回用户最后在线时间差 return onlineTime; }
如果回答有帮助,望采纳。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
- ¥15 matlab自定义损失函数
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图