@@ -2,7 +2,7 @@ use std::net::SocketAddr;
2
2
use tracing:: info;
3
3
4
4
use std:: time:: Duration ;
5
- use tonic:: { service:: LayerExt , transport :: Server } ;
5
+ use tonic:: service:: LayerExt ;
6
6
use tower_http:: cors:: { AllowOrigin , CorsLayer } ;
7
7
8
8
#[ tokio:: main]
@@ -13,22 +13,25 @@ async fn main() -> anyhow::Result<()> {
13
13
// https://github.com/tower-rs/tower-http/issues/194
14
14
. allow_origin ( AllowOrigin :: mirror_request ( ) )
15
15
. max_age ( Duration :: from_secs ( 86400 ) ) ;
16
- let server = pulsebeam_server_foss:: Server :: default ( ) ;
16
+ let server =
17
+ pulsebeam_server_foss:: SignalingServer :: new ( pulsebeam_server_foss:: Server :: default ( ) ) ;
17
18
let server = tower:: ServiceBuilder :: new ( )
18
- . layer ( cors)
19
19
. layer ( tonic_web:: GrpcWebLayer :: new ( ) )
20
20
. into_inner ( )
21
- . named_layer ( pulsebeam_server_foss:: SignalingServer :: new ( server) ) ;
21
+ . named_layer ( server) ;
22
+ let grpc_routes = tonic:: service:: Routes :: new ( server)
23
+ . prepare ( )
24
+ . into_axum_router ( ) ;
22
25
23
26
let addr: SocketAddr = "[::]:3000" . parse ( ) . unwrap ( ) ;
24
27
info ! ( "Listening on {addr}" ) ;
25
- Server :: builder ( )
26
- // GrpcWeb is over http1 so we must enable it.
27
- . accept_http1 ( true )
28
- . layer ( tower_http :: trace :: TraceLayer :: new_for_grpc ( ) )
29
- . add_service ( server )
30
- . serve ( addr)
31
- . await ?;
28
+
29
+ let router = axum :: Router :: new ( )
30
+ . nest_service ( "/grpc" , grpc_routes )
31
+ . layer ( cors ) ;
32
+
33
+ let listener = tokio :: net :: TcpListener :: bind ( addr) . await ? ;
34
+ axum :: serve ( listener , router ) . await ?;
32
35
33
36
Ok ( ( ) )
34
37
}
0 commit comments