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
e1abb6bd
Commit
e1abb6bd
authored
Feb 14, 2025
by
qlintonger xeno
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对接GetCompanyUserList成功
parent
d6ca5e6c
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
13 deletions
+39
-13
src/client.rs
+6
-1
src/deport.rs
+21
-4
src/handles/online_users_update.rs
+12
-8
No files found.
src/client.rs
View file @
e1abb6bd
...
...
@@ -140,7 +140,12 @@ pub(crate) async fn handle_client(
}
},
_
=>
{
handle_ws_msg
(
data
.msg_type
,
from_id
.clone
(),
event_sender
.clone
());
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
.msg_type
,
from_id_clone
,
event_sender_clone
,
connection_time_clone
)
.await
;
});
}
}
}
...
...
src/deport.rs
View file @
e1abb6bd
use
crate
::
events
::
Event
;
use
crate
::
handles
::
online_users_update
::{
online_messages
,
send_online_users_resp
};
use
tokio
::
sync
::
mpsc
::
UnboundedSender
;
pub
fn
handle_ws_msg
(
pub
async
fn
handle_ws_msg
(
msg_type
:
String
,
from_id
:
String
,
event_sender
:
UnboundedSender
<
Event
>
,
connection_time
:
u128
,
)
{
match
msg_type
.as_str
()
{
"GetCompanyUserList"
=>
{
println!
(
"收到客户端获取在线用户列表 {}"
,
&
from_id
);
},
_
=>
{
// 需要主动发送在线人员更新事件
if
let
Ok
(
online_users_json
)
=
send_online_users_resp
()
.await
{
if
let
Ok
(
formatted_json
)
=
online_messages
(
online_users_json
,
from_id
.clone
())
{
if
let
Err
(
e
)
=
event_sender
.send
(
Event
::
SendClientMessage
(
(
from_id
.clone
(),
connection_time
),
formatted_json
,
false
,
))
{
println!
(
"客户端要求更新在线列表 {}发送在线用户列表失败 {:?}"
,
&
from_id
,
e
);
}
else
{
println!
(
"客户端要求更新在线列表 {}发送在线用户列表成功"
,
&
from_id
);
}
}
}
}
_
=>
{}
}
}
src/handles/online_users_update.rs
View file @
e1abb6bd
...
...
@@ -42,6 +42,17 @@ pub struct ServerOnlineUserMessage {
pub
time
:
u128
,
}
pub
fn
online_messages
(
messages
:
Vec
<
OnlineUserMessage
>
,
from_id
:
String
)
->
serde_json
::
Result
<
String
>
{
serde_json
::
to_string
(
&
ServerOnlineUserMessage
{
msg_type
:
"CmdUpdateUserList"
.to_string
(),
from_name
:
"Server"
.to_string
(),
from_id
:
"0"
.to_string
(),
to_id
:
from_id
,
msg_data
:
messages
,
time
:
get_current_timestamp
(),
})
}
pub
async
fn
send_online_users_and_send
(
sender
:
&
mut
(
impl
SinkExt
<
Message
,
Error
=
Error
>
+
Unpin
),
from_id
:
&
str
,
...
...
@@ -49,14 +60,7 @@ pub async fn send_online_users_and_send(
let
messages
=
send_online_users_resp
()
.await
.map_err
(|
e
|
Error
::
Io
(
std
::
io
::
Error
::
new
(
std
::
io
::
ErrorKind
::
Other
,
e
)))
?
;
let
json_message
=
serde_json
::
to_string
(
&
ServerOnlineUserMessage
{
msg_type
:
"CmdUpdateUserList"
.to_string
(),
from_name
:
"Server"
.to_string
(),
from_id
:
"0"
.to_string
(),
to_id
:
from_id
.to_string
(),
msg_data
:
messages
,
time
:
get_current_timestamp
(),
})
let
json_message
=
online_messages
(
messages
,
from_id
.to_string
())
.map_err
(|
e
|
Error
::
Io
(
std
::
io
::
Error
::
new
(
std
::
io
::
ErrorKind
::
Other
,
e
)))
?
;
if
let
Err
(
e
)
=
sender
.send
(
Message
::
text
(
json_message
))
.await
{
println!
(
"发送在线用户列表消息给用户 {} 失败: {}"
,
from_id
,
e
);
...
...
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