|
@@ -609,32 +609,47 @@ us.deluser = function (userid, pageid) {
|
|
|
* 用户下线,用计时器实时的监控用户是否在线
|
|
|
*/
|
|
|
us.offLine = function () {
|
|
|
- var i, j, istrue = true;
|
|
|
+ var i, j;
|
|
|
var _user, _connect = us.connect;
|
|
|
//循环目前所有的连接用户
|
|
|
for (i in _connect) {
|
|
|
_user = _connect[i];
|
|
|
for (j in _user) {
|
|
|
+ console.log("====================offline======================");
|
|
|
+ console.log(i);
|
|
|
+ console.log(j);
|
|
|
+ console.log(_user[j].response.finished);
|
|
|
+ console.log((_user[j].response.connection == null || _user[j].response.connection.destroyed));
|
|
|
//判断用户已下线
|
|
|
- if (_user[j].response.connection == null || _user[j].response.connection.destroyed) {
|
|
|
- console.log("================2===============");
|
|
|
- console.log(i);
|
|
|
- console.log(j);
|
|
|
- us.deluser(i, j); //删除用户的数据
|
|
|
- delete _user[j]
|
|
|
+ if (_user[j].response.finished || (_user[j].response.connection == null || _user[j].response.connection.destroyed)) {
|
|
|
+ //if (_user[j].response.connection == null || _user[j].response.connection.destroyed) {
|
|
|
+ //等待五秒后,判断用户是否重连,重连的用户不为下线用户
|
|
|
+ us.offLineByUser(i, j, _user);
|
|
|
}
|
|
|
}
|
|
|
- for (j in _user) { istrue = false; break }
|
|
|
- //这个用户下所有的连接用户都不在了
|
|
|
- if (istrue) {
|
|
|
- //用户登录数据清理,用于已经下线
|
|
|
- delete us.user[i];
|
|
|
- delete us.connect[i];
|
|
|
- }
|
|
|
- istrue = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+* 用户下线
|
|
|
+*/
|
|
|
+us.offLineByUser = function (i, j, _user) {
|
|
|
+ setTimeout(() => {
|
|
|
+ if (_user[j].response.finished || (_user[j].response.connection == null || _user[j].response.connection.destroyed)) {
|
|
|
+ var k, istrue = true;
|
|
|
+ us.deluser(i, j); //删除用户的数据
|
|
|
+ delete _user[j];
|
|
|
+ for (k in _user) { istrue = false; break }
|
|
|
+ //这个用户下所有的连接用户都不在了
|
|
|
+ if (istrue) {
|
|
|
+ //用户登录数据清理,用于已经下线
|
|
|
+ delete us.user[i];
|
|
|
+ delete us.connect[i];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 5000);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* 获取用户传参异步
|
|
|
*
|
|
@@ -1807,15 +1822,17 @@ us.logout = function (response, userid, pageid) {
|
|
|
var _user = us.connect[userid];
|
|
|
//循环目前所有的连接用户
|
|
|
us.deluser(userid, pageid); //删除用户的数据
|
|
|
- delete _user[pageid]
|
|
|
- for (j in _user) { istrue = false; break }
|
|
|
- //这个用户下所有的连接用户都不在了
|
|
|
- if (istrue) {
|
|
|
- //用户登录数据清理,用于已经下线
|
|
|
- delete us.user[userid];
|
|
|
- delete us.connect[userid];
|
|
|
+ if (_user) {
|
|
|
+ delete _user[pageid]
|
|
|
+ for (j in _user) { istrue = false; break }
|
|
|
+ //这个用户下所有的连接用户都不在了
|
|
|
+ if (istrue) {
|
|
|
+ //用户登录数据清理,用于已经下线
|
|
|
+ delete us.user[userid];
|
|
|
+ delete us.connect[userid];
|
|
|
+ }
|
|
|
+ console.log(pageid)
|
|
|
}
|
|
|
- console.log(pageid)
|
|
|
response.end('logout'); //响应退出请求
|
|
|
|
|
|
// var i, j, _docinfo,
|
|
@@ -2617,7 +2634,7 @@ us.createGuid = function () {
|
|
|
**/
|
|
|
us.server.listen('1473', '', function () {
|
|
|
//用户下线监控
|
|
|
- setInterval(function () { us.offLine() }, 10000);
|
|
|
+ setInterval(function () { us.offLine() }, 60000);
|
|
|
//在控制台输出监听提示
|
|
|
console.log("开始监听" + us.server.address().port + "......");
|
|
|
});
|