Commit 19bee953 by qlintonger xeno

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

parent 6ebcc949
......@@ -15,6 +15,7 @@ use tokio::time;
use tungstenite::{Error, Message};
lazy_static! {
#[derive(Debug)]
pub static ref ONLINE_USERS: DashMap<String, String> = DashMap::new();
}
......@@ -114,7 +115,7 @@ pub(crate) async fn handle_client(
println!("收到客户端心跳消息 {:?}", &data);
last_heartbeat_time = Instant::now();
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)
} else {
println!("处理心跳消息成功")
......@@ -123,11 +124,8 @@ pub(crate) async fn handle_client(
},
_ => {
let from_id_clone = from_id.clone();
let event_sender_clone = event_sender.clone();
let connection_time_clone = connection_time.clone();
tokio::spawn(async move {
handle_ws_msg(&data, from_id_clone, event_sender_clone, connection_time_clone).await;
});
handle_ws_msg(&data, from_id_clone, &event_sender, connection_time_clone).await;
}
}
}
......
......@@ -7,7 +7,7 @@ use tokio::sync::mpsc::UnboundedSender;
pub async fn handle_ws_msg(
client_message_data: &ClientMessageData,
from_id: String,
event_sender: UnboundedSender<Event>,
event_sender: &UnboundedSender<Event>,
connection_time: u128,
) {
let msg_type = client_message_data.msg_type.clone();
......
......@@ -22,6 +22,7 @@ pub enum ClientMessage {
}
lazy_static! {
#[derive(Debug)]
pub static ref CLIENT_SENDERS: DashMap<(String, u128), mpsc::UnboundedSender<ClientMessage>> =
DashMap::new();
}
......
......@@ -16,18 +16,18 @@ use tokio::sync::mpsc;
#[tokio::main]
async fn main() {
let listener = TcpListener::bind(addr).await.unwrap();
// 创建事件通道
let (event_sender, event_receiver) = mpsc::unbounded_channel();
// 启动事件处理任务
tokio::spawn(handle_events(event_receiver));
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();
tokio::spawn(handle_client(
stream,
client_event_sender,
event_sender.clone(),
center_to_client_sender,
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