Skip to content

Commit 067fd1f

Browse files
committed
websocket示例调整
1 parent 6e1f7a4 commit 067fd1f

File tree

3 files changed

+26
-23
lines changed

3 files changed

+26
-23
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ jobs:
2727
- uses: Swatinem/rust-cache@v1
2828
- name: Check code format
2929
run: cargo fmt -- --check
30-
- name: Check the package for errors
31-
run: cargo check --all
30+
# - name: Check the package for errors
31+
# run: cargo check --all
3232
- name: Lint rust sources
3333
run: cargo clippy --all-targets --all-features --tests --benches -- -D warnings
3434
- name: Execute rust tests

.pre-commit-config.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ repos:
3535
language: rust
3636
files: \.rs$
3737
args: [ ]
38-
- id: cargo-check
39-
name: cargo check
40-
description: Check the package for errors.
41-
entry: bash -c 'cargo check --all'
42-
language: rust
43-
files: \.rs$
44-
pass_filenames: false
38+
# - id: cargo-check
39+
# name: cargo check
40+
# description: Check the package for errors.
41+
# entry: bash -c 'cargo check --all'
42+
# language: rust
43+
# files: \.rs$
44+
# pass_filenames: false
4545
- id: cargo-clippy
4646
name: cargo clippy
4747
description: Lint rust sources

examples/websocket-chat/src/main.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,15 @@ async fn on_connect(
4242
Ok(())
4343
}
4444

45-
async fn on_send(message: Message, parts: Arc<RwLock<WebSocketParts>>) -> Result<Message> {
46-
let parts = parts.read().await;
47-
let uid = parts.extensions().get::<usize>().unwrap();
45+
async fn on_send(message: Message, _parts: Arc<RwLock<WebSocketParts>>) -> Result<Message> {
4846
println!("on_send: {:?}", message);
47+
Ok(message)
48+
}
49+
50+
async fn on_receive(message: Message, parts: Arc<RwLock<WebSocketParts>>) -> Result<()> {
51+
let parts = parts.read().await;
52+
let my_id = parts.extensions().get::<usize>().unwrap();
53+
println!("on_receive: {:?}", message);
4954
let msg = if let Ok(s) = message.to_str() {
5055
s
5156
} else {
@@ -54,14 +59,7 @@ async fn on_send(message: Message, parts: Arc<RwLock<WebSocketParts>>) -> Result
5459
msg: "invalid message".to_string(),
5560
});
5661
};
57-
let message = Message::text(format!("<User#{uid}>: {msg}"));
58-
Ok(message)
59-
}
60-
61-
async fn on_receive(message: Message, parts: Arc<RwLock<WebSocketParts>>) -> Result<()> {
62-
let parts = parts.read().await;
63-
let my_id = parts.extensions().get::<usize>().unwrap();
64-
println!("on_receive: {:?}", message);
62+
let message = Message::text(format!("<User#{my_id}>: {msg}"));
6563
for (uid, tx) in ONLINE_USERS.read().await.iter() {
6664
if my_id != uid {
6765
if let Err(_disconnected) = tx.send(message.clone()) {}
@@ -86,7 +84,7 @@ async fn handle_socket(ws: WebSocket) {
8684
let (tx, mut rx) = mpsc::unbounded_channel();
8785
on_connect(parts.clone(), tx.clone()).await.unwrap();
8886
let sender_parts = parts.clone();
89-
// let receiver_parts = parts;
87+
let receiver_parts = parts;
9088

9189
let fut = async move {
9290
while let Some(message) = rx.recv().await {
@@ -101,11 +99,16 @@ async fn handle_socket(ws: WebSocket) {
10199
let fut = async move {
102100
while let Some(message) = user_ws_rx.next().await {
103101
if let Ok(message) = message {
104-
on_receive(message, parts.clone()).await.unwrap();
102+
if message.is_close() {
103+
break;
104+
}
105+
if on_receive(message, receiver_parts.clone()).await.is_err() {
106+
break;
107+
}
105108
}
106109
}
107110

108-
on_close(parts).await;
111+
on_close(receiver_parts).await;
109112
};
110113
tokio::task::spawn(fut);
111114
}

0 commit comments

Comments
 (0)