1+ //! Run with
2+ //!
3+ //! ```not_rust
4+ //! cargo run --example simple
5+ //! ```
6+
17use embedded_io_adapters:: tokio_1:: FromTokio ;
28use rand:: { SeedableRng , rngs:: StdRng } ;
39use tokio:: net:: TcpStream ;
4- use websocketz:: { Message , WebSocket , next, options:: ConnectOptions } ;
10+ use websocketz:: { Message , WebSocket , http :: Header , next, options:: ConnectOptions } ;
511
612#[ tokio:: main]
713async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
8- let stream = TcpStream :: connect ( "127.0.0.1:9002" ) . await ?;
14+ let domain = "websockets.chilkat.io" ;
15+
16+ let addr = tokio:: net:: lookup_host ( ( domain, 80 ) )
17+ . await ?
18+ . next ( )
19+ . ok_or ( "Failed to resolve domain" ) ?;
20+
21+ let stream = TcpStream :: connect ( addr) . await ?;
922
1023 let read_buf = & mut [ 0u8 ; 8192 * 2 ] ;
1124 let write_buf = & mut [ 0u8 ; 8192 * 2 ] ;
1225 let fragments_buf = & mut [ 0u8 ; 8192 * 2 ] ;
1326 let rng = StdRng :: from_os_rng ( ) ;
1427
1528 let mut websocketz = WebSocket :: connect :: < 16 > (
16- ConnectOptions :: default ( ) ,
29+ ConnectOptions :: default ( )
30+ . with_path_unchecked ( "/wsChilkatEcho.ashx" )
31+ . with_headers ( & [ Header {
32+ name : "Host" ,
33+ value : domain. as_bytes ( ) ,
34+ } ] ) ,
1735 FromTokio :: new ( stream) ,
1836 rng,
1937 read_buf,
@@ -27,14 +45,26 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
2745 websocketz. framable( )
2846 ) ;
2947
30- websocketz. send ( Message :: Text ( "Hello, WebSocket!" ) ) . await ?;
48+ ' ws: loop {
49+ websocketz. send ( Message :: Text ( "Hello, WebSocket!" ) ) . await ?;
50+
51+ match next ! ( websocketz) {
52+ None => {
53+ println ! ( "EOF" ) ;
54+
55+ break ' ws;
56+ }
57+ Some ( Ok ( msg) ) => {
58+ println ! ( "Received message: {msg:?}" ) ;
59+ }
60+ Some ( Err ( err) ) => {
61+ eprintln ! ( "Error receiving message: {err:?}" ) ;
3162
32- websocketz
33- . send_fragmented ( Message :: Text ( "Hello, Fragmented WebSocket!" ) , 4 )
34- . await ? ;
63+ break ' ws ;
64+ }
65+ }
3566
36- while let Some ( message) = next ! ( websocketz) . transpose ( ) ? {
37- println ! ( "Received message: {message:?}" ) ;
67+ tokio:: time:: sleep ( tokio:: time:: Duration :: from_millis ( 500 ) ) . await ;
3868 }
3969
4070 Ok ( ( ) )
0 commit comments