zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
use actix::Actor;

use std::time::Duration;
use tokio::time;
use tokio_stream::wrappers::IntervalStream;
use tokio_stream::StreamExt;

use super::server::Server;
use crate::websocket::devstreams::messages;
use crate::websocket::devstreams::OutputMessageType;

pub type ConnectId = String;

pub struct AppState {
    pub ss: actix::Addr<Server>,
}

impl AppState {
    pub fn build() -> Self {
        let s = Self {
            ss: Server::default().start(),
        };

        Self::server_time(s.ss.clone());

        s
    }

    pub fn server_time(svr: actix::Addr<Server>) {
        tokio::spawn(async move {
            // let mut stream = IntervalStream::new(time::interval(Duration::from_millis(10)));
            let mut stream = IntervalStream::new(time::interval(Duration::from_millis(100)));

            while (stream.next().await).is_some() {
                let s = chrono::Utc::now()
                    .format("%Y-%m-%dT%H:%M:%S.%3f")
                    .to_string()
                    + "Z";

                svr.do_send(messages::Broadcast {
                    ty: OutputMessageType::ServerTime,
                    msg: s,
                });
            }
        });
    }
}