File tree Expand file tree Collapse file tree 2 files changed +38
-2
lines changed Expand file tree Collapse file tree 2 files changed +38
-2
lines changed Original file line number Diff line number Diff line change @@ -257,7 +257,7 @@ export class Socket extends Emitter<
257
257
public writeBuffer : Packet [ ] = [ ] ;
258
258
259
259
private prevBufferLen : number ;
260
- private upgrades ;
260
+ private upgrades : string [ ] ;
261
261
private pingInterval : number ;
262
262
private pingTimeout : number ;
263
263
private pingTimeoutTimer : NodeJS . Timer ;
@@ -601,7 +601,19 @@ export class Socket extends Emitter<
601
601
this . once ( "close" , onclose ) ;
602
602
this . once ( "upgrading" , onupgrade ) ;
603
603
604
- transport . open ( ) ;
604
+ if (
605
+ this . upgrades . indexOf ( "webtransport" ) !== - 1 &&
606
+ name !== "webtransport"
607
+ ) {
608
+ // favor WebTransport
609
+ this . setTimeoutFn ( ( ) => {
610
+ if ( ! failed ) {
611
+ transport . open ( ) ;
612
+ }
613
+ } , 200 ) ;
614
+ } else {
615
+ transport . open ( ) ;
616
+ }
605
617
}
606
618
607
619
/**
Original file line number Diff line number Diff line change @@ -115,6 +115,30 @@ describe("WebTransport", () => {
115
115
) ;
116
116
} ) ;
117
117
118
+ it ( "should favor WebTransport over WebSocket" , ( done ) => {
119
+ setup (
120
+ {
121
+ transports : [ "polling" , "websocket" , "webtransport" ] ,
122
+ } ,
123
+ ( { engine, h3Server, certificate } ) => {
124
+ const httpServer = createServer ( ) ;
125
+ engine . attach ( httpServer ) ;
126
+ httpServer . listen ( h3Server . port ) ;
127
+
128
+ const socket = createSocket ( h3Server . port , certificate , {
129
+ transports : [ "polling" , "websocket" , "webtransport" ] ,
130
+ } ) ;
131
+
132
+ socket . on ( "upgrade" , ( transport ) => {
133
+ expect ( transport . name ) . to . eql ( "webtransport" ) ;
134
+
135
+ httpServer . close ( ) ;
136
+ success ( engine , h3Server , done ) ;
137
+ } ) ;
138
+ }
139
+ ) ;
140
+ } ) ;
141
+
118
142
it ( "should send ping/pong packets" , ( done ) => {
119
143
setup (
120
144
{
You can’t perform that action at this time.
0 commit comments