use actix::{Actor, StreamHandler}; use actix_web::{web, Error, HttpRequest, HttpResponse}; use actix_web_actors::ws; use log::*; /// Define HTTP actor struct MyWs; impl Actor for MyWs { type Context = ws::WebsocketContext; } /// Handler for ws::Message message impl StreamHandler> for MyWs { fn handle(&mut self, msg: Result, ctx: &mut Self::Context) { match msg { Ok(ws::Message::Ping(msg)) => ctx.pong(&msg), Ok(ws::Message::Text(text)) => ctx.text(text), Ok(ws::Message::Binary(bin)) => ctx.binary(bin), _ => (), } } } pub async fn index(req: HttpRequest, stream: web::Payload) -> Result { let resp = ws::start(MyWs {}, &req, stream); match &resp { Ok(resp) => info!("{:?}", resp), Err(e) => error!("{:?}", e), } resp }