Skip to content

Commit 8cecd61

Browse files
committed
chore(examples): added split example
Signed-off-by: Jad K. Haddad <jadkhaddad@gmail.com>
1 parent 3a1901e commit 8cecd61

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

examples/aplit.rs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
use embedded_io_adapters::tokio_1::FromTokio;
2+
use rand::{SeedableRng, rngs::StdRng};
3+
use tokio::{
4+
io::{ReadHalf, WriteHalf},
5+
net::TcpStream,
6+
};
7+
use websocketz::{Message, WebSocket, next, options::ConnectOptions};
8+
9+
fn split(
10+
stream: FromTokio<TcpStream>,
11+
) -> (
12+
FromTokio<ReadHalf<TcpStream>>,
13+
FromTokio<WriteHalf<TcpStream>>,
14+
) {
15+
let (read, write) = tokio::io::split(stream.into_inner());
16+
17+
(FromTokio::new(read), FromTokio::new(write))
18+
}
19+
20+
#[tokio::main]
21+
async fn main() -> Result<(), Box<dyn std::error::Error>> {
22+
let stream = TcpStream::connect("127.0.0.1:9002").await?;
23+
24+
let read_buf = &mut [0u8; 8192 * 2];
25+
let write_buf = &mut [0u8; 8192 * 2];
26+
let fragments_buf = &mut [0u8; 8192 * 2];
27+
let rng = StdRng::from_os_rng();
28+
29+
let websocketz = WebSocket::connect::<16>(
30+
ConnectOptions::default(),
31+
FromTokio::new(stream),
32+
rng,
33+
read_buf,
34+
write_buf,
35+
fragments_buf,
36+
)
37+
.await?;
38+
39+
let (mut websocketz_read, mut websocketz_write) = websocketz.split_with(split);
40+
41+
websocketz_write
42+
.send(Message::Text("Hello, WebSocket!"))
43+
.await?;
44+
45+
websocketz_write
46+
.send_fragmented(Message::Text("Hello, Fragmented WebSocket!"), 4)
47+
.await?;
48+
49+
while let Some(message) = next!(websocketz_read).transpose()? {
50+
println!("Received message: {message:?}");
51+
}
52+
53+
Ok(())
54+
}

0 commit comments

Comments
 (0)