|
@@ -520,34 +520,20 @@ us.login = function (requset, response, userid, pageid, username, type) {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
-* 用户下线
|
|
|
-* @param {object} response 响应对象
|
|
|
-* @param {string} userid 用户ID
|
|
|
-* @param {string} pageid 页面ID(唯一识别ID)
|
|
|
+* 用户下线,清理用户的数据
|
|
|
*/
|
|
|
-us.offLine = function (response, userid, pageid) {
|
|
|
+us.deluser = function (pageid) {
|
|
|
+
|
|
|
var i, j, z; //定义循环变量
|
|
|
var _userid, _fileid, _message, _docinfo, _messageinfo,
|
|
|
_csclids = us.offLineMessage[pageid].cscl,
|
|
|
_wordids = us.offLineMessage[pageid].word, //得到加入的所有word
|
|
|
_excelids = us.offLineMessage[pageid].excel; //得到加入的所有excel
|
|
|
+
|
|
|
console.log(pageid)
|
|
|
console.log(us.offLineMessage[pageid])
|
|
|
- //删除用户连接
|
|
|
- delete us.connect[userid][pageid];
|
|
|
-
|
|
|
//删除用户离校消息记录
|
|
|
delete us.offLineMessage[pageid];
|
|
|
-
|
|
|
- //取消用户
|
|
|
- if (us.connect[userid]) {
|
|
|
- for (z in us.connect[userid]) { break }
|
|
|
- if (!z) {
|
|
|
- //用户登录数据清理,用于已经下线
|
|
|
- delete us.user[userid];
|
|
|
- delete us.connect[userid];
|
|
|
- }
|
|
|
- }
|
|
|
console.log("1111111111111")
|
|
|
console.log(_csclids)
|
|
|
//知识架构的下线的处理
|
|
@@ -591,8 +577,33 @@ us.offLine = function (response, userid, pageid) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+}
|
|
|
|
|
|
-
|
|
|
+/**
|
|
|
+* 用户下线,用计时器实时的监控用户是否在线
|
|
|
+*/
|
|
|
+us.offLine = function () {
|
|
|
+ var i, j, istrue = true;
|
|
|
+ var _user, _connect = us.connect;
|
|
|
+ //循环目前所有的连接用户
|
|
|
+ for (i in _connect) {
|
|
|
+ _user = _connect[i];
|
|
|
+ for (j in _user) {
|
|
|
+ //判断用户已下线
|
|
|
+ if (_user[j].response.writableEnded) {
|
|
|
+ us.deluser(j); //删除用户的数据
|
|
|
+ delete _user[j]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (j in _user) { istrue = false; break }
|
|
|
+ //这个用户下所有的连接用户都不在了
|
|
|
+ if (istrue) {
|
|
|
+ //用户登录数据清理,用于已经下线
|
|
|
+ delete us.user[userid];
|
|
|
+ delete us.connect[userid];
|
|
|
+ }
|
|
|
+ istrue = true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -604,14 +615,15 @@ us.offLine = function (response, userid, pageid) {
|
|
|
**/
|
|
|
us.polling = function (requset, response, userid, pageid, type) {
|
|
|
// 监听请求的close事件
|
|
|
- requset.on('close', () => {
|
|
|
- console.log("--------" + userid + "-------------" + pageid);
|
|
|
- //us.offLine(response, userid, pageid)
|
|
|
- });
|
|
|
+ // requset.on('close', () => {
|
|
|
+ // console.log("--------" + userid + "-------------" + pageid);
|
|
|
+ // //us.offLine(response, userid, pageid)
|
|
|
+ // });
|
|
|
+
|
|
|
//判断轮询的用户是否在连接池中
|
|
|
if (us.connect[userid]) {
|
|
|
var _userarray = us.connect[userid], //用户连接池,获取制定用户连接的数量,
|
|
|
- _messagearray = us.offLineMessage[pageid] //用户离校消息
|
|
|
+ _messagearray = us.offLineMessage[pageid] //用户离线信息
|
|
|
;
|
|
|
//获取当前连接的用户,如果获取成功那么直接修改用户的连接
|
|
|
if (_userarray[pageid]) {
|
|
@@ -859,7 +871,7 @@ us.updatecscl = function (messageInfo, classId, ty) {
|
|
|
_obj.nodes.push(messageInfo.nodes[j])
|
|
|
}
|
|
|
}
|
|
|
- console.log(_obj);
|
|
|
+ //console.log(_obj);
|
|
|
//如果不存在则去数据库查找
|
|
|
us.mysql.usselect(['172.16.12.5', 'pbl', 'updateRoomData', JSON.stringify(_obj), classId],
|
|
|
function (ret) {
|
|
@@ -2091,14 +2103,14 @@ us.getcscl = function (response, calssid, pageid, userid) {
|
|
|
var _user = us.getuserbytype(us.cscl[calssid].user); //获取当前项目下所有的用户信息
|
|
|
var _data = us.cscl[calssid].content; //保存在内存的知识建构数据
|
|
|
if (ret) {
|
|
|
- console.log("eeee");
|
|
|
- console.log(us.offLineMessage[pageid]);
|
|
|
+ //console.log("eeee");
|
|
|
+ //console.log(us.offLineMessage[pageid]);
|
|
|
ret[0][0].user = _user; //这里是项目当前所有用户
|
|
|
ret[0][0].data = _data; //把思维网格的内容转化成数组
|
|
|
if (userid && us.user[userid]) {
|
|
|
us.sendUser(us.user[userid], "cscl", pageid, calssid); //加入知识建构项目后通知所有的用户
|
|
|
}
|
|
|
- console.log(ret[0][0].user)
|
|
|
+ //console.log(ret[0][0].user)
|
|
|
response.end(JSON.stringify(ret)); //返回文档内容
|
|
|
}
|
|
|
else {
|
|
@@ -2120,8 +2132,8 @@ us.getcscl = function (response, calssid, pageid, userid) {
|
|
|
function (ret) {
|
|
|
var _user = us.getuserbytype(us.cscl[calssid].user);
|
|
|
if (ret) {
|
|
|
- console.log("bbbbbbbbbbbbbbb");
|
|
|
- console.log(us.offLineMessage[pageid]);
|
|
|
+ //console.log("bbbbbbbbbbbbbbb");
|
|
|
+ //console.log(us.offLineMessage[pageid]);
|
|
|
ret[0][0].user = _user; //这里是项目当前所有用户
|
|
|
us.cscl[calssid].content = JSON.parse(ret[0][0].data); //把思维网格的内容转化成数组
|
|
|
//us.sendUser(us.user[userid], "cscl", pageid, calssid); //加入知识建构项目后通知所有的用户
|
|
@@ -2434,6 +2446,8 @@ us.createGuid = function () {
|
|
|
*
|
|
|
**/
|
|
|
us.server.listen('1473', '', function () {
|
|
|
+ //用户下线监控
|
|
|
+ setInterval(function () { us.offLine() }, 10000);
|
|
|
//在控制台输出监听提示
|
|
|
console.log("开始监听" + us.server.address().port + "......");
|
|
|
});
|