wsUri = "ws://" + authServiceIP + ":" + authServicePort + "/wsaccess"; ws = new WebSocket(wsUri); userDic = {}; var socket; $(function () { checkUserLogin(); }); var newSocket = function () { // ws = new WebSocket(wsUri); ws.onopen = function (evt) { } ws.onclose = function (evt) { reconnect(); } ws.onmessage = function (evt) { var result = JSON.parse(evt.data); if (result.success) { switch (result.api) { case "user.readuser": //判断当前缓存的用户在数据库是否存在 if (result.body.account.created < 0) { GD.createErrorDialog(420, 160, "当前用户在数据库已不存在,请用其他用户登录"); return; } break; } } else { } } ws.onerror = function (evt) { reconnect(); console.log(evt); //return; } }; var reconnect = function () { ws = new WebSocket(wsUri); ws.onopen = function (evt) {} ws.onmessage = function (evt) {} } newSocket(); (function () { var socketOption = { path: '/wsaccess/socket.io/' }; if(isAuthEnable=="True"){ if (typeof (socket) == "undefined") { socket = GD.io("http://" + authServiceIP + ":" + authServicePort, socketOption); socket.on('connection', function () { }); socket.on('disconnect', function () { }); socket.on('close', function () { socket = null; }) socket.on('message', function (result) { }); socket.on('error', function (data) { console.log(data); // alert('后台服务连接失败'); }) } }else{ socket=""; return; } })(); function logIn(username, pwd, callback) { if (!ws) { return false; } var msg = '{"header": {"token": "TOKEN"},"api": "auth.authenticate","request": { "name": "' + username + '","password": "' + pwd + '"}}' localStorage.clear(); ws.send(msg); var login = function (evt) { var result = JSON.parse(evt.data); if (result.success) { switch (result.api) { case "auth.authenticate": //如果用户登陆成功,将用户信息缓存下来 localStorage.setItem("user", JSON.stringify(result.body.user)); localStorage.setItem("token", JSON.stringify(result.body.token)); localStorage.setItem("userGroup", typeof (result.body.user.groupid) == "undefined" ? 0 : result.body.user.groupid); localStorage.setItem("extra", typeof (result.body.user.extra) == "undefined" ? '""' : JSON.stringify(result.body.user.extra)); getAuthInfoByGroupId(result.body.user.groupid, function (data) { if (data) { // alert("登录成功"); eval(callback); } }); window.alarmInit && alarmInit(); break; case "user.readgroup": localStorage.setItem("userLevel", typeof (result.body.group.level) == "undefined" ? 0 : result.body.group.level); ws.removeEventListener('message', login); break; } } else { if (result.api == "auth.authenticate") { GD.createErrorDialog(300, 160, '用户名或密码不正确!', function (){}, function () {}); ws.removeEventListener('message', login); return; } } } ws.addEventListener('message', login); } //用户退出 function loginOut() { if (!ws) { return false; } var logout = function (evt) { var result = JSON.parse(evt.data); ws.removeEventListener('message', logout); if (result.success) { if (result.api == "auth.logout") { //localStorage.removeItem("user"); //用户退出登陆 localStorage.clear(); //alert("退出登陆"); } } ws.removeEventListener('message', logout); } if (localStorage.getItem("token") != null) { var msg = '{"header": {"token": ' + localStorage.getItem("token") + '},"api": "auth.logout"}'; ws.send(msg); ws.addEventListener('message', logout); } else { // alert("用户未登录!"); return; } } //获取操作对应的权限 function getAuthInfoByGroupId(groupid, callback) { var authdata = function (evt) { var result = JSON.parse(evt.data); if (result.success) { if (result.api == "user.readgroup") { var userLevel = parseInt(localStorage.getItem("userLevel")); var userGroup = parseInt(localStorage.getItem("userGroup")); var operLevel = typeof (result.body.group.level) == "undefined" ? 0 : parseInt(result.body.group.level); var operGroup = typeof (result.body.group.id) == "undefined" ? 0 : parseInt(result.body.group.id); // if (userGroup != operGroup && userLevel < operLevel) { // GD.createErrorDialog(300, 160, "没有该操作的权限"); // return; // } else { // callback(true); // } if (userLevel < operLevel) { GD.createErrorDialog(300, 160, "没有该操作的权限"); return; } else if(userLevel == operLevel&&userGroup != operGroup){ GD.createErrorDialog(300, 160, "没有该操作的权限"); return; }else{ callback(true); } } ws.removeEventListener('message', authdata); } } if (!ws) { return false; } //unescape(getCookieValue("token")) if (localStorage.getItem("token") != null) { var msg = '{"header": {"token": ' + localStorage.getItem("token") + '},"api": "user.readgroup","request": { "id": ' + groupid + ' }}'; ws.send(msg); ws.addEventListener('message', authdata); } } //判断用户是否登陆 function checkUserLogin() { var userinfo = localStorage.getItem("user"); // alert(unescape(userinfo)); //console.log(getCookieValue("user")+" token: "+getCookieValue("token")+" userGroup: "+getCookieValue("userGroup")) if (userinfo == "" || userinfo == null) { //alert("用户未登录!"); return; } } function checkUserExistByUserId(userid) { if (!ws) { return false; } if (localStorage.getItem("token") != null) { var msg = '{"header": { "token":' + localStorage.getItem("token") + ' }, "api": "user.readuser", "request": { "id": ' + userid + ' }}'; ws.send(msg); } else { GD.createErrorDialog(300, 160, "用户未登录!"); } } //获取所有的用户 function getAllUsers(callback) { if (!socket) { callback(); return false; } socket.post('user.searchuser', { "offset": 0, "limit": 10 }, function (result) { if (result.success) { if (result.api == "user.searchuser") { localStorage.setItem("allusers", JSON.stringify(result.body.accounts)); callback(true); } } else { callback(); } }) } //写入操作记录 function addOpera(tagName, areaName, result, groupid, desc, quality, callback) { if (!ws) { return false; } if (typeof quality === 'function') { callback = quality; quality = ''; } var writeopera = function (evt) { var result = JSON.parse(evt.data); if (result.success) { if (result.api == "operate.add") { callback(true); } } ws.removeEventListener('message', writeopera); } if (localStorage.getItem("token") != null) { $.ajax({ url: "http://" + webServiceIP + ":" + webServicePort + "/api/Table/?tableName=" + areaName, type: "GET", dataType: 'JSON', contentType: "application/json; charset=utf-8", success: function (data) { areaName = data.Desc || areaName; var msg = '{"header": { "token":' + localStorage.getItem("token") + ' }, "api": "operate.add",'; msg += '"request": {"operate": {"tag": "' + tagName + '", "device": "' + quality + '.' + areaName + '","result": ' + result + ',"desc": "' + desc + '" }}}'; ws.send(msg); ws.addEventListener('message', writeopera); }, error: function () { GD.createErrorDialog(300, 160, "写入操作记录时发生错误!"); }, complete: function (xhr) { xhr = null; } }) } else { GD.createErrorDialog(300, 160, "用户未登录!"); } } //把数据保存到后端服务 function cacheKeyValueData(key, value, callback) { if (!socket) { callback(); return false; } // var cacheSet = function (evt) { // var result = JSON.parse(evt.data); // if (result.success) { // if (result.api == "cache.set") { // callback(true); // } // } else { // callback(); // } // ws.removeEventListener('message', cacheSet); // } // if(ws.readyState == 1){ // if (localStorage.getItem("token") != null) { // var msg = '{"header": {"token": ' + localStorage.getItem("token") + '},"api": "cache.set","request": { "key": "' + key + '","value":"' + value + '" }}'; // ws.send(msg); // ws.addEventListener('message', cacheSet); // } else { // alert("用户未登录!"); // callback(); // } // } socket.post('cache.set', { "key": key, "value": value }, function (result) { if (result.success) { if (result.api == "cache.set") { callback(true); } } else { callback(); } }) } //读取后端key/value数据 function getKeyValueData(key, callback) { if (!socket) { callback(); return false; } // var cacheget = function (evt) { // var result = JSON.parse(evt.data); // if (result.success) { // if (result.api == "cache.get") { // callback(result.body.value); // } // } else { // callback(); // } // ws.removeEventListener('message', cacheget); // } // if (ws.readyState == 1) { // if (localStorage.getItem("token") != null) { // var msg = '{"header": {"token": ' + localStorage.getItem("token") + '},"api": "cache.get","request": { "key": "' + key + '"}}'; // ws.send(msg); // ws.addEventListener('message', cacheget); // } else { // alert("用户未登录!"); // callback(); // } // } socket.post('cache.get', { "key": key }, function (result) { if (result.success) { if (result.api == "cache.get") { callback(result.body.value); } } else { callback(); } }) }