1use futures_util::{SinkExt, StreamExt};
2use std::time::Duration;
3use tokio::time::timeout;
4use tokio_tungstenite::connect_async;
5use tokio_tungstenite::tungstenite::Message;
6use ws_mock::matchers::Any;
7use ws_mock::ws_mock_server::{WsMock, WsMockServer};
8
9#[tokio::main]
10pub async fn main() {
11 let server = WsMockServer::start().await;
12
13 WsMock::new()
14 .matcher(Any::new())
15 .respond_with(Message::Text("Hello World".into()))
16 .expect(1)
17 .mount(&server)
18 .await;
19
20 let (stream, _resp) = connect_async(server.uri().await)
21 .await
22 .expect("Connecting failed");
23
24 let (mut send, mut recv) = stream.split();
25
26 send.send(Message::from("some message")).await.unwrap();
27
28 let mut received = Vec::new();
29
30 while let Ok(Some(Ok(message))) = timeout(Duration::from_millis(100), recv.next()).await {
31 received.push(message);
32 }
33
34 server.verify().await;
35 assert_eq!(vec![Message::Text("Hello World".into())], received);
36}