use std::net::SocketAddr; use tonic::transport::Server; use tonic_web::GrpcWebLayer; use crate::protocol::game_service_server::GameServiceServer; use crate::protocol::general_service_server::GeneralServiceServer; use crate::services::game_service::GameServiceImpl; use crate::services::general_service::GeneralServiceImpl; pub(crate) struct GrpcServer; impl GrpcServer { pub(crate) async fn init() { let addr = SocketAddr::new([127, 0, 0, 1].into(), 12345); let general_service = GeneralServiceServer::new(GeneralServiceImpl); let game_service = GameServiceServer::new(GameServiceImpl); Server::builder() .accept_http1(true) .layer(GrpcWebLayer::new()) .add_service(general_service) .add_service(game_service) .serve(addr) .await .unwrap_or_else(|e| log::error!("Failed to build server: {e}")); } }