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<
257257 public writeBuffer : Packet [ ] = [ ] ;
258258
259259 private prevBufferLen : number ;
260- private upgrades ;
260+ private upgrades : string [ ] ;
261261 private pingInterval : number ;
262262 private pingTimeout : number ;
263263 private pingTimeoutTimer : NodeJS . Timer ;
@@ -601,7 +601,19 @@ export class Socket extends Emitter<
601601 this . once ( "close" , onclose ) ;
602602 this . once ( "upgrading" , onupgrade ) ;
603603
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+ }
605617 }
606618
607619 /**
Original file line number Diff line number Diff line change @@ -115,6 +115,30 @@ describe("WebTransport", () => {
115115 ) ;
116116 } ) ;
117117
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+
118142 it ( "should send ping/pong packets" , ( done ) => {
119143 setup (
120144 {
You can’t perform that action at this time.
0 commit comments