Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
evm-store
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanli
evm-store
Commits
65cb9a19
Commit
65cb9a19
authored
Aug 07, 2021
by
wanli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🐞
fix(monitor.py): 修复资源监视器前端bug
parent
45d223b9
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
271 additions
and
248 deletions
+271
-248
backend/app/signal_manager.py
backend/app/signal_manager.py
+6
-1
backend/controller/__init__.py
backend/controller/__init__.py
+7
-1
backend/controller/monitor.py
backend/controller/monitor.py
+118
-35
backend/view/monitor.py
backend/view/monitor.py
+106
-175
frontend/src/utils/eventBus.js
frontend/src/utils/eventBus.js
+8
-8
frontend/src/views/system/monitor.vue
frontend/src/views/system/monitor.vue
+26
-28
No files found.
backend/app/signal_manager.py
View file @
65cb9a19
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-0
7-03 11:53
:43
LastEditTime: 2021-0
8-07 17:42
:43
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\a
pp
\
signal_manager.py
...
...
@@ -18,6 +18,11 @@ class SignalManager(object):
actionApplicationBuild
=
PySignal
()
actionGetConvertString
=
PySignal
()
actionOpqcp
=
PySignal
()
actionGetMonitor
=
PySignal
()
actionPostMonitor
=
PySignal
()
actionReceiveMessage
=
PySignal
()
actionBroadcateMessage
=
PySignal
()
actionCheckClient
=
PySignal
()
# 登录模块
actionLogin
=
PySignal
()
...
...
backend/controller/__init__.py
View file @
65cb9a19
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-0
7-03 11:53:04
LastEditTime: 2021-0
8-07 17:44:21
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
controller
\
__init__.py
...
...
@@ -20,6 +20,7 @@ from .download_manager import downloadManager
from
.login_logs_manager
import
loginLogsManager
from
.app_logs_manager
import
appLogsManager
from
.build_logs_manager
import
buildLogsManager
from
.monitor
import
monitorManager
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -29,6 +30,11 @@ def initConnect():
signalManager
.
actionGetConvertString
.
connect
(
apiManager
.
get_escape_text
)
signalManager
.
actionUpdatePassword
.
connect
(
apiManager
.
update_user_password
)
signalManager
.
actionOpqcp
.
connect
(
apiManager
.
opqcp
)
signalManager
.
actionGetMonitor
.
connect
(
monitorManager
.
get
)
signalManager
.
actionPostMonitor
.
connect
(
monitorManager
.
post
)
signalManager
.
actionReceiveMessage
.
connect
(
monitorManager
.
receive_message
)
signalManager
.
actionBroadcateMessage
.
connect
(
monitorManager
.
broadcast_message
)
signalManager
.
actionCheckClient
.
connect
(
monitorManager
.
check_client
)
# 登录模块
signalManager
.
actionLogin
.
connect
(
loginManager
.
login
)
...
...
backend/controller/monitor.py
View file @
65cb9a19
'''
Author: your name
Date: 2021-06-29 19:24:32
LastEditTime: 2021-0
7-23 22:26:56
LastEditTime: 2021-0
8-07 18:05:28
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
controller
\
monitor.py
'''
import
jwt
import
json
import
time
import
logging
from
app
import
config
from
model.monitor
import
session
,
System
,
Lvgl
,
Evm
,
Image
,
Device
,
Request
,
User
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -113,39 +116,6 @@ lvglResource = LvglResource()
evmResource
=
EvmResource
()
imageResource
=
ImageResource
()
def
insert_data
(
msg
):
# 先判断手表imei是否存在,不存在则先注册手表IMEI
watch_id
=
-
1
if
msg
.
get
(
"imei"
):
result
=
session
.
query
(
Device
)
.
filter_by
(
imei
=
msg
.
get
(
"imei"
))
.
first
()
if
result
:
watch_id
=
result
.
id
else
:
logger
.
info
(
"设备不存在"
)
return
None
if
msg
.
get
(
"request"
):
msg
.
get
(
"request"
)
.
update
({
"watch"
:
watch_id
})
result
=
Request
(
**
msg
.
get
(
"request"
))
session
.
add
(
result
)
session
.
flush
()
session
.
commit
()
if
msg
.
get
(
"system"
):
msg
.
get
(
"system"
)
.
update
({
"watch"
:
watch_id
})
systemResource
.
post
(
msg
.
get
(
"system"
))
if
msg
.
get
(
"lvgl"
):
msg
.
get
(
"lvgl"
)
.
update
({
"watch"
:
watch_id
})
lvglResource
.
post
(
msg
.
get
(
"lvgl"
))
if
msg
.
get
(
"evm"
):
msg
.
get
(
"evm"
)
.
update
({
"watch"
:
watch_id
})
evmResource
.
post
(
msg
.
get
(
"evm"
))
if
msg
.
get
(
"image"
):
imageResource
.
post_array
(
msg
.
get
(
"image"
),
watch_id
)
def
get_watch_list
():
result
=
session
.
query
(
Device
)
.
all
()
tmp
=
[]
...
...
@@ -224,3 +194,116 @@ def get_monitor_list(watch, category, start, end):
'lvgl'
:
lvgl_data
(
watch
,
start
,
end
),
'image'
:
image_data
(
watch
,
start
,
end
)
}
class
MonitorManager
(
object
):
def
__init__
(
self
):
pass
def
get
(
self
,
data
):
watch
=
data
.
get
(
"watch"
)
category
=
data
.
get
(
"category"
)
start
=
data
.
get
(
"start"
)
end
=
data
.
get
(
"end"
)
# 判断watch是否存在
w
=
session
.
query
(
Device
)
.
filter
(
Device
.
id
==
watch
)
.
first
()
if
not
w
:
return
[]
if
category
==
"system"
:
return
[]
elif
category
==
"image"
:
return
image_data
(
watch
,
start
,
end
)
elif
category
==
"lvgl"
:
return
lvgl_data
(
watch
,
start
,
end
)
elif
category
==
"evm"
:
return
evm_data
(
watch
,
start
,
end
)
else
:
return
{
'evm'
:
evm_data
(
watch
,
start
,
end
),
'lvgl'
:
lvgl_data
(
watch
,
start
,
end
),
'image'
:
image_data
(
watch
,
start
,
end
)
}
def
post
(
self
,
msg
):
# 先判断手表imei是否存在,不存在则先注册手表IMEI
watch_id
=
-
1
if
msg
.
get
(
"imei"
):
result
=
session
.
query
(
Device
)
.
filter_by
(
imei
=
msg
.
get
(
"imei"
))
.
first
()
if
result
:
watch_id
=
result
.
id
else
:
logger
.
info
(
"设备不存在"
)
return
None
if
msg
.
get
(
"request"
):
msg
.
get
(
"request"
)
.
update
({
"watch"
:
watch_id
})
result
=
Request
(
**
msg
.
get
(
"request"
))
session
.
add
(
result
)
session
.
flush
()
session
.
commit
()
if
msg
.
get
(
"system"
):
msg
.
get
(
"system"
)
.
update
({
"watch"
:
watch_id
})
systemResource
.
post
(
msg
.
get
(
"system"
))
if
msg
.
get
(
"lvgl"
):
msg
.
get
(
"lvgl"
)
.
update
({
"watch"
:
watch_id
})
lvglResource
.
post
(
msg
.
get
(
"lvgl"
))
if
msg
.
get
(
"evm"
):
msg
.
get
(
"evm"
)
.
update
({
"watch"
:
watch_id
})
evmResource
.
post
(
msg
.
get
(
"evm"
))
if
msg
.
get
(
"image"
):
imageResource
.
post_array
(
msg
.
get
(
"image"
),
watch_id
)
def
check_client
(
self
,
instance
):
index
=
-
1
for
i
,
c
in
enumerate
(
instance
.
_clients
):
if
id
(
instance
)
==
id
(
c
.
get
(
"context"
)):
index
=
i
break
return
index
def
receive_message
(
self
,
instance
,
message
):
print
(
instance
.
_clients
,
message
)
if
message
.
get
(
"type"
)
and
message
.
get
(
"token"
):
# 获取token值,检验正确与否,获取uuid
payload
=
jwt
.
decode
(
message
.
get
(
"token"
),
config
[
'SECRET_KEY'
],
verify
=
True
,
algorithms
=
[
'HS256'
],
options
=
{
'verify_aud'
:
False
})
# 认证包,认证不通过,则剔除该连接
if
message
.
get
(
"type"
)
==
"auth"
:
if
not
message
.
get
(
"token"
):
return
json
.
dumps
({
"code"
:
400
,
"data"
:
None
,
"msg"
:
"token can not be null"
})
user
=
session
.
query
(
User
)
.
filter
(
User
.
id
==
payload
.
get
(
"data"
)
.
get
(
"id"
))
.
one_or_none
()
if
not
user
:
return
json
.
dumps
({
"code"
:
400
,
"data"
:
None
,
"msg"
:
"user not exists"
})
# 查询该用户可查看设备
devices
=
session
.
query
(
Device
)
.
filter
(
Device
.
create_by
==
payload
.
get
(
"data"
)
.
get
(
"id"
))
.
all
()
if
len
(
devices
):
instance
.
_clients
.
append
({
'uuid'
:
payload
.
get
(
"data"
)
.
get
(
"uuid"
),
'context'
:
instance
,
'devices'
:
list
(
map
(
lambda
d
:
d
.
imei
,
devices
)),
'ts'
:
int
(
time
.
time
())
})
return
json
.
dumps
({
'code'
:
200
,
'data'
:
None
,
'msg'
:
'auth passed'
})
else
:
# 没有设备,是否断开连接
return
json
.
dumps
({
'code'
:
400
,
'data'
:
None
,
'msg'
:
'no devices'
})
else
:
return
json
.
dumps
({
'code'
:
200
,
'data'
:
None
,
'msg'
:
'unkonw message packet, disconnect by server'
})
def
broadcast_message
(
self
,
clients
,
message
):
print
(
clients
,
message
)
if
not
message
.
get
(
"imei"
):
return
False
for
item
in
clients
:
if
message
.
get
(
"imei"
)
in
item
.
get
(
"devices"
,
[]):
item
.
get
(
"context"
)
.
write_message
(
json
.
dumps
(
message
))
monitorManager
=
MonitorManager
()
\ No newline at end of file
backend/view/monitor.py
View file @
65cb9a19
This diff is collapsed.
Click to expand it.
frontend/src/utils/eventBus.js
View file @
65cb9a19
/*
* @Author: your name
* @Date: 2021-07-01 15:02:16
* @LastEditTime: 2021-0
7-28 10:42:15
* @LastEditTime: 2021-0
8-07 18:29:02
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \evm-store\frontend\src\utils\eventBus.js
*/
import
Vue
from
"
vue
"
;
import
store
from
"
@/store
"
;
//
import store from "@/store";
export
let
wsNotify
=
new
WebSocket
(
`ws://
${
window
.
location
.
hostname
}
:3000/ws/v1/notify`
...
...
@@ -23,14 +23,14 @@ wsNotify.eventBus.$on("reconnect", () => {
);
})
let
timer
=
null
;
//
let timer = null;
wsNotify
.
onopen
=
function
(
event
)
{
console
.
log
(
"
websocket is conneted!
"
,
event
);
wsNotify
.
eventBus
.
$emit
(
"
open
"
,
event
);
timer
=
setInterval
(
function
()
{
wsNotify
.
send
(
JSON
.
stringify
({
type
:
'
heartbeat
'
,
ts
:
Date
.
now
(),
token
:
store
.
getters
.
token
}))
},
1000
)
//
timer = setInterval(function() {
//
wsNotify.send(JSON.stringify({ type: 'heartbeat', ts: Date.now(), token: store.getters.token }))
//
}, 1000)
};
wsNotify
.
onmessage
=
function
(
event
)
{
...
...
@@ -41,11 +41,11 @@ wsNotify.onmessage = function (event) {
wsNotify
.
onerror
=
function
(
error
)
{
console
.
log
(
error
);
wsNotify
.
eventBus
.
$emit
(
"
error
"
,
error
);
if
(
timer
)
clearInterval
(
timer
);
//
if (timer) clearInterval(timer);
};
wsNotify
.
onclose
=
function
(
event
)
{
console
.
log
(
"
websocket is colosed!
"
,
event
);
wsNotify
.
eventBus
.
$emit
(
"
close
"
,
event
);
if
(
timer
)
clearInterval
(
timer
);
//
if (timer) clearInterval(timer);
};
frontend/src/views/system/monitor.vue
View file @
65cb9a19
...
...
@@ -949,8 +949,6 @@ export default {
}
});
if
(
m
)
{
if
(
m
.
evm
)
this
.
evm
=
m
.
evm
;
if
(
m
.
lvgl
)
this
.
lvgl
=
m
.
lvgl
;
...
...
@@ -959,32 +957,7 @@ export default {
}
},
},
mounted
()
{
this
.
socket
=
wsNotify
;
wsNotify
.
eventBus
.
$on
(
"
exported
"
,
(
res
)
=>
{
if
(
res
.
type
===
"
evm
"
)
result
.
evmImg
=
res
.
data
;
else
if
(
res
.
type
===
"
lvgl
"
)
result
.
lvglImg
=
res
.
data
;
else
if
(
res
.
type
===
"
system
"
)
result
.
systemImg
=
res
.
data
;
});
wsNotify
.
eventBus
.
$on
(
"
open
"
,
(
message
)
=>
{
this
.
sendMsg
();
this
.
$nextTick
(()
=>
{
console
.
log
(
message
);
});
// 这里启动一个定时器,10秒钟后,如果没有消息进来,说明当前没有在线设备
});
wsNotify
.
eventBus
.
$on
(
"
close
"
,
(
message
)
=>
{
this
.
$nextTick
(()
=>
{
console
.
log
(
message
);
});
});
wsNotify
.
eventBus
.
$on
(
"
message
"
,
(
message
)
=>
{
this
.
$nextTick
(()
=>
{
this
.
handleMessage
(
deepClone
(
message
));
});
});
},
mounted
()
{},
destroyed
()
{
// 页面关闭则销毁该数据库
monitor
.
deleteDB
();
...
...
@@ -1009,6 +982,31 @@ export default {
.
catch
((
err
)
=>
{
console
.
error
(
err
);
});
this
.
socket
=
wsNotify
;
wsNotify
.
eventBus
.
$on
(
"
exported
"
,
(
res
)
=>
{
if
(
res
.
type
===
"
evm
"
)
result
.
evmImg
=
res
.
data
;
else
if
(
res
.
type
===
"
lvgl
"
)
result
.
lvglImg
=
res
.
data
;
else
if
(
res
.
type
===
"
system
"
)
result
.
systemImg
=
res
.
data
;
});
wsNotify
.
eventBus
.
$on
(
"
open
"
,
(
message
)
=>
{
this
.
sendMsg
();
this
.
$nextTick
(()
=>
{
console
.
log
(
message
);
});
// 这里启动一个定时器,10秒钟后,如果没有消息进来,说明当前没有在线设备
});
wsNotify
.
eventBus
.
$on
(
"
close
"
,
(
message
)
=>
{
this
.
$nextTick
(()
=>
{
console
.
log
(
message
);
});
});
wsNotify
.
eventBus
.
$on
(
"
message
"
,
(
message
)
=>
{
this
.
$nextTick
(()
=>
{
this
.
handleMessage
(
deepClone
(
message
));
});
});
},
};
</
script
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment