node.js - 在选项卡处于非活动状态时保持 Socket.io 活动
问题描述
我正在尝试实现一个代码,该代码显示站点中的在线用户列表及其上次活动时间。But a issue I'm facing is that, when the tab is inactive or the user isn't performing any action on the tab, the socket gets disconnected automatically. 如果选项卡处于打开状态,无论是否处于活动状态,我如何保持套接字处于活动状态。
应用程序.js
...
io.on('connection', function(socket){
let userName
socket.on('user viewing', function(user){
let inActiveUsers = false
for(var x = 0; x < activeUsers.length; x++) {
if(activeUsers[x].username == user) {
inActiveUsers = true
activeUsers[x].last_activity = MDate.getDateTime()
break
}
}
if(!inActiveUsers) {
activeUsers.push({"username": user, "last_activity": MDate.getDateTime()})
}
userName = user
io.emit('active users', activeUsers)
})
socket.on('disconnect', function(){
let userIndex = -1
for(var x = 0; x < activeUsers.length; x++) {
if(activeUsers[x].username == userName) {
userIndex = x
break
}
}
if(userIndex != -1) {
activeUsers[x].last_activity = 'NULL'
}
io.emit('active users', activeUsers)
})
})
...
客户端代码
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.emit('user viewing', '<%= user.username %>');
</script>
解决方案
推荐阅读
- html - 在闪亮中返回上一个链接
- aws-lambda - 雪花的异步外部函数不尊重 HttpStatus 429
- javascript - 带有对象解构的下一个 js 动态导入
- javascript - 无法使用 Angular 多次上传同一个文件
- postgresql - 如何复制特定分区表
- java - WebRTC Android 原生可插入流
- javascript - 如何解决reactjs中的noscript渲染问题
- xgboost - 如何在 Vertex AI 中使用 XGBoost 模型的批量预测来保留实体标识符
- c# - .NET 6 中的 .NET Framework 4.5 / .NET Standard 1.0 支持
- javascript - 一次从 URL 下载 100 张图片的正确模式?