Commit 19bee953 by qlintonger xeno

基本消息类型完成,准备测试一下+4.5

parent 6ebcc949
...@@ -15,6 +15,7 @@ use tokio::time; ...@@ -15,6 +15,7 @@ use tokio::time;
use tungstenite::{Error, Message}; use tungstenite::{Error, Message};
lazy_static! { lazy_static! {
#[derive(Debug)]
pub static ref ONLINE_USERS: DashMap<String, String> = DashMap::new(); pub static ref ONLINE_USERS: DashMap<String, String> = DashMap::new();
} }
...@@ -114,7 +115,7 @@ pub(crate) async fn handle_client( ...@@ -114,7 +115,7 @@ pub(crate) async fn handle_client(
println!("收到客户端心跳消息 {:?}", &data); println!("收到客户端心跳消息 {:?}", &data);
last_heartbeat_time = Instant::now(); last_heartbeat_time = Instant::now();
if let Ok(json_str) = heart_resp(&from_id) { if let Ok(json_str) = heart_resp(&from_id) {
if let Err(e) = event_sender.clone().send(Event::SendClientMessage((from_id.clone(), connection_time), json_str, false)){ if let Err(e) = event_sender.send(Event::SendClientMessage((from_id.clone(), connection_time), json_str, false)){
println!("处理心跳消息出错了:{:?}", e) println!("处理心跳消息出错了:{:?}", e)
} else { } else {
println!("处理心跳消息成功") println!("处理心跳消息成功")
...@@ -123,11 +124,8 @@ pub(crate) async fn handle_client( ...@@ -123,11 +124,8 @@ pub(crate) async fn handle_client(
}, },
_ => { _ => {
let from_id_clone = from_id.clone(); let from_id_clone = from_id.clone();
let event_sender_clone = event_sender.clone();
let connection_time_clone = connection_time.clone(); let connection_time_clone = connection_time.clone();
tokio::spawn(async move { handle_ws_msg(&data, from_id_clone, &event_sender, connection_time_clone).await;
handle_ws_msg(&data, from_id_clone, event_sender_clone, connection_time_clone).await;
});
} }
} }
} }
......
...@@ -7,7 +7,7 @@ use tokio::sync::mpsc::UnboundedSender; ...@@ -7,7 +7,7 @@ use tokio::sync::mpsc::UnboundedSender;
pub async fn handle_ws_msg( pub async fn handle_ws_msg(
client_message_data: &ClientMessageData, client_message_data: &ClientMessageData,
from_id: String, from_id: String,
event_sender: UnboundedSender<Event>, event_sender: &UnboundedSender<Event>,
connection_time: u128, connection_time: u128,
) { ) {
let msg_type = client_message_data.msg_type.clone(); let msg_type = client_message_data.msg_type.clone();
......
...@@ -22,6 +22,7 @@ pub enum ClientMessage { ...@@ -22,6 +22,7 @@ pub enum ClientMessage {
} }
lazy_static! { lazy_static! {
#[derive(Debug)]
pub static ref CLIENT_SENDERS: DashMap<(String, u128), mpsc::UnboundedSender<ClientMessage>> = pub static ref CLIENT_SENDERS: DashMap<(String, u128), mpsc::UnboundedSender<ClientMessage>> =
DashMap::new(); DashMap::new();
} }
......
...@@ -16,18 +16,18 @@ use tokio::sync::mpsc; ...@@ -16,18 +16,18 @@ use tokio::sync::mpsc;
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
let listener = TcpListener::bind(addr).await.unwrap(); let listener = TcpListener::bind(addr).await.unwrap();
// 创建事件通道 // 创建事件通道
let (event_sender, event_receiver) = mpsc::unbounded_channel(); let (event_sender, event_receiver) = mpsc::unbounded_channel();
// 启动事件处理任务 // 启动事件处理任务
tokio::spawn(handle_events(event_receiver)); tokio::spawn(handle_events(event_receiver));
while let Ok((stream, _)) = listener.accept().await { while let Ok((stream, _)) = listener.accept().await {
let client_event_sender = event_sender.clone();
// 创建一个用于事件中心向客户端发送消息的通道 // 创建一个用于事件中心向客户端发送消息的通道
let (center_to_client_sender, center_to_client_receiver) = mpsc::unbounded_channel(); let (center_to_client_sender, center_to_client_receiver) = mpsc::unbounded_channel();
tokio::spawn(handle_client( tokio::spawn(handle_client(
stream, stream,
client_event_sender, event_sender.clone(),
center_to_client_sender, center_to_client_sender,
center_to_client_receiver, center_to_client_receiver,
)); ));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment