diff --git a/src/chat/chat_api_base.rs b/src/chat/chat_api_base.rs index af475a3..0096b25 100644 --- a/src/chat/chat_api_base.rs +++ b/src/chat/chat_api_base.rs @@ -1,11 +1,11 @@ - pub struct Message { sender_id: i32, message: String, } -pub fn show_message () { +pub struct ClientServer {} +pub struct FrontendServer {} -} +pub fn show_message() {} -pub fn main () {} \ No newline at end of file +fn main() {} diff --git a/src/chat/front_conn.rs b/src/chat/front_conn.rs new file mode 100644 index 0000000..2a6bc76 --- /dev/null +++ b/src/chat/front_conn.rs @@ -0,0 +1,81 @@ +type Decoded = String; +type Encoded = String; + +trait Handler { + fn process(code: State) -> Message; + fn send(socket: &WebSocketStream, msg: Message); +} +struct MessageServer { + new_message: bool, + text: String, +} + +struct MessageClient { + message_queue: Vec, +} + +impl MessageServer { + fn new() -> MessageServer { + MessageServer { + new_message: false, + text: String::from(""), + } + } +} + +impl MessageClient { + fn new() -> MessageClient { + MessageClient { + message_queue: vec![], + } + } +} + +pub fn listen_client() -> io::Result<()> { + task::block_on(connect_to_client()) +} + +async fn connect_to_client() -> io::Result<()> { + let addr = env::args() + .nth(1) + .unwrap_or_else(|| "127.0.0.1:8080".to_string()); + + let listener = TcpListener::bind(&addr).await?; + + while let Ok((stream, _)) = listener.accept().await { + task::spawn(accept_client(stream)); + } + + Ok(()) +} + +async fn accept_client(stream: TcpStream) -> io::Result<()> { + let addr = stream + .peer_addr() + .expect("connected streams should have a peer address"); + println!("Peer address: {}", addr); + + let ws = accept_async(stream) + .await + .expect("err during the ws handshake"); + + println!("connected to: {}", addr); + + let (mut sender, mut receiver) = ws.split(); + let mut new_msg = receiver.next(); + loop { + match new_msg.await { + Some(msg) => { + println!("{:?}", msg.unwrap().into_text().unwrap()); + sender + .send(Message::Text("msg".to_owned())) + .await + .expect("ooops"); + new_msg = receiver.next(); + } + None => break, + } + } + + Ok(()) +} diff --git a/src/chat/serv_conn.rs b/src/chat/serv_conn.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/chat/types.rs b/src/chat/types.rs new file mode 100644 index 0000000..e69de29