router.rs 741 B

123456789101112131415161718192021222324252627282930
  1. use crate::service::ws_service::{entities::SessionId, WSClient, WSServer};
  2. use actix::Addr;
  3. use actix_web::{
  4. get,
  5. web::{Data, Path, Payload},
  6. Error,
  7. HttpRequest,
  8. HttpResponse,
  9. };
  10. use actix_web_actors::ws;
  11. #[get("/{token}")]
  12. pub async fn start_connection(
  13. request: HttpRequest,
  14. payload: Payload,
  15. path: Path<String>,
  16. server: Data<Addr<WSServer>>,
  17. ) -> Result<HttpResponse, Error> {
  18. let client = WSClient::new(SessionId::new(path.clone()), server.get_ref().clone());
  19. let result = ws::start(client, &request, payload);
  20. match result {
  21. Ok(response) => Ok(response.into()),
  22. Err(e) => {
  23. log::error!("ws connection error: {:?}", e);
  24. Err(e)
  25. },
  26. }
  27. }