Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
ws-rst
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
qlintonger xeno
ws-rst
Commits
19bee953
Commit
19bee953
authored
Feb 19, 2025
by
qlintonger xeno
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
基本消息类型完成,准备测试一下+4.5
parent
6ebcc949
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
7 additions
and
8 deletions
+7
-8
src/client.rs
+3
-5
src/deport.rs
+1
-1
src/events.rs
+1
-0
src/handles/handle_agora_call.rs
+0
-0
src/main.rs
+2
-2
No files found.
src/client.rs
View file @
19bee953
...
@@ -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
;
});
}
}
}
}
}
}
...
...
src/deport.rs
View file @
19bee953
...
@@ -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
();
...
...
src/events.rs
View file @
19bee953
...
@@ -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
();
}
}
...
...
src/handles/handle_agora_call.rs
View file @
19bee953
This diff is collapsed.
Click to expand it.
src/main.rs
View file @
19bee953
...
@@ -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
,
));
));
...
...
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