Change summary
tokio-xmpp/examples/echo_server.rs | 37 ++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
Detailed changes
@@ -0,0 +1,37 @@
+use futures::{SinkExt, StreamExt};
+use tokio::{self, io, net::TcpSocket};
+use tokio_util::codec::Framed;
+
+use tokio_xmpp::XMPPCodec;
+
+#[tokio::main]
+async fn main() -> Result<(), io::Error> {
+ // TCP socket
+ let address = "127.0.0.1:5222".parse().unwrap();
+ let socket = TcpSocket::new_v4()?;
+ socket.bind(address)?;
+
+ let listener = socket.listen(1024)?;
+
+ // Main loop, accepts incoming connections
+ loop {
+ let (stream, _addr) = listener.accept().await?;
+
+ // Use the `XMPPCodec` to encode and decode frames
+ let mut framed = Framed::new(stream, XMPPCodec::new());
+
+ tokio::spawn(async move {
+ while let Some(packet) = framed.next().await {
+ match packet {
+ Ok(packet) => {
+ println!("Received packet: {:?}", packet);
+ framed.send(packet).await.unwrap();
+ }
+ Err(e) => {
+ eprintln!("Error: {:?}", e);
+ }
+ }
+ }
+ });
+ }
+}