mirror of
https://github.com/trafficlunar/computer-statistics.git
synced 2026-06-27 22:24:09 +00:00
feat: key press counter
This commit is contained in:
parent
8d84c99979
commit
d06617e367
5 changed files with 287 additions and 31 deletions
|
|
@ -1,5 +1,11 @@
|
|||
use std::{net::TcpStream, thread, time::Duration};
|
||||
use std::{
|
||||
net::TcpStream,
|
||||
sync::{Arc, Mutex},
|
||||
thread,
|
||||
time::Duration,
|
||||
};
|
||||
|
||||
use inputbot::KeybdKey;
|
||||
use sysinfo::System;
|
||||
use tungstenite::{stream::MaybeTlsStream, WebSocket};
|
||||
|
||||
|
|
@ -8,6 +14,18 @@ use crate::websocket;
|
|||
pub fn start_sending(socket: &mut WebSocket<MaybeTlsStream<TcpStream>>) {
|
||||
let mut sys = System::new();
|
||||
|
||||
// Key counter
|
||||
let key_counter = Arc::new(Mutex::new(0_u16));
|
||||
let key_counter_clone = Arc::clone(&key_counter);
|
||||
thread::spawn(move || {
|
||||
KeybdKey::bind_all(move |_| {
|
||||
let mut count = key_counter_clone.lock().unwrap();
|
||||
*count += 1;
|
||||
});
|
||||
|
||||
inputbot::handle_input_events();
|
||||
});
|
||||
|
||||
loop {
|
||||
sys.refresh_cpu_usage();
|
||||
sys.refresh_memory();
|
||||
|
|
@ -16,10 +34,16 @@ pub fn start_sending(socket: &mut WebSocket<MaybeTlsStream<TcpStream>>) {
|
|||
|
||||
let total_memory = sys.total_memory();
|
||||
let used_memory = sys.used_memory();
|
||||
|
||||
let memory_usage = ((used_memory as f64) / (total_memory as f64) * 100.0).floor() as u8;
|
||||
|
||||
websocket::send(socket, cpu_usage, memory_usage);
|
||||
let mut guard = key_counter.lock().unwrap();
|
||||
let key_presses = *guard;
|
||||
|
||||
websocket::send(socket, cpu_usage, memory_usage, key_presses);
|
||||
|
||||
// Reset key press counter after sending
|
||||
*guard = 0;
|
||||
|
||||
thread::sleep(Duration::from_secs(60));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,20 @@
|
|||
use std::{env, net::TcpStream};
|
||||
|
||||
use tungstenite::{handshake::client::generate_key, http::Request, stream::MaybeTlsStream, Message, WebSocket};
|
||||
use tungstenite::{
|
||||
handshake::client::generate_key, http::Request, stream::MaybeTlsStream, Message, WebSocket,
|
||||
};
|
||||
use url::Url;
|
||||
|
||||
use crate::notifications;
|
||||
|
||||
pub fn connect() -> Result<WebSocket<MaybeTlsStream<TcpStream>>, tungstenite::Error> {
|
||||
let websocket_url = Url::parse(&env::var("WEBSOCKET_URL").unwrap()).expect("Invalid WebSocket URL");
|
||||
let websocket_url =
|
||||
Url::parse(&env::var("WEBSOCKET_URL").unwrap()).expect("Invalid WebSocket URL");
|
||||
let host = websocket_url.host_str().expect("Host not found in URL");
|
||||
|
||||
let host_header = match websocket_url.port() {
|
||||
Some(port) => format!("{}:{}", host, port),
|
||||
None => host.to_string()
|
||||
None => host.to_string(),
|
||||
};
|
||||
|
||||
let request = Request::builder()
|
||||
|
|
@ -40,12 +43,13 @@ pub fn connect() -> Result<WebSocket<MaybeTlsStream<TcpStream>>, tungstenite::Er
|
|||
Ok(socket)
|
||||
}
|
||||
|
||||
pub fn send(socket: &mut WebSocket<MaybeTlsStream<TcpStream>>, cpu: u8, ram: u8) {
|
||||
let message = format!("{{ \"cpu\": {}, \"ram\": {} }}", cpu, ram);
|
||||
pub fn send(socket: &mut WebSocket<MaybeTlsStream<TcpStream>>, cpu: u8, ram: u8, key_presses: u16) {
|
||||
let message = format!(
|
||||
"{{ \"cpu\": {}, \"ram\": {}, \"key_presses\": {} }}",
|
||||
cpu, ram, key_presses
|
||||
);
|
||||
|
||||
println!("Sending to WebSocket: {}", message);
|
||||
|
||||
socket
|
||||
.send(Message::Text(message))
|
||||
.unwrap();
|
||||
socket.send(Message::Text(message)).unwrap();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue