Skip to content

Commit 8641d2c

Browse files
authored
Add transport.getDataChannelMaxMessageSize() (#372)
# Details - In a send `Transport` it returns the maximum DataChannel message size that it can send. - In a receive `Transport` it returns the maximum DataChannel message size that it can receive. - Note that it can return `undefined` (if DataChannels is not enabled).
1 parent c25ddee commit 8641d2c

8 files changed

Lines changed: 30 additions & 0 deletions

File tree

src/Transport.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,10 @@ export class Transport<
875875
}, 'transport.consumeData()');
876876
}
877877

878+
getDataChannelMaxMessageSize(): number | undefined {
879+
return this._handler.getDataChannelMaxMessageSize();
880+
}
881+
878882
// This method is guaranteed to never throw.
879883
private createPendingConsumers<ConsumerAppData extends AppData>(): void {
880884
this._consumerCreationInProgress = true;

src/handlers/Chrome111.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,6 +1240,10 @@ export class Chrome111
12401240
return { dataChannel };
12411241
}
12421242

1243+
getDataChannelMaxMessageSize(): number | undefined {
1244+
return this._pc.sctp?.maxMessageSize;
1245+
}
1246+
12431247
private async setupTransport({
12441248
localDtlsRole,
12451249
localSdpObject,

src/handlers/Chrome74.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,6 +1246,10 @@ export class Chrome74
12461246
return { dataChannel };
12471247
}
12481248

1249+
getDataChannelMaxMessageSize(): number | undefined {
1250+
return this._pc.sctp?.maxMessageSize;
1251+
}
1252+
12491253
private async setupTransport({
12501254
localDtlsRole,
12511255
localSdpObject,

src/handlers/FakeHandler.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,10 @@ export class FakeHandler
453453
return { dataChannel };
454454
}
455455

456+
getDataChannelMaxMessageSize(): number | undefined {
457+
return 500000;
458+
}
459+
456460
private async setupTransport({
457461
localDtlsRole,
458462
// eslint-disable-next-line @typescript-eslint/no-unused-vars

src/handlers/Firefox120.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,6 +1201,10 @@ export class Firefox120
12011201
return { dataChannel };
12021202
}
12031203

1204+
getDataChannelMaxMessageSize(): number | undefined {
1205+
return this._pc.sctp?.maxMessageSize;
1206+
}
1207+
12041208
private async setupTransport({
12051209
localDtlsRole,
12061210
localSdpObject,

src/handlers/HandlerInterface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,6 @@ export abstract class HandlerInterface extends EnhancedEventEmitter<HandlerEvent
186186
abstract receiveDataChannel(
187187
options: HandlerReceiveDataChannelOptions
188188
): Promise<HandlerReceiveDataChannelResult>;
189+
190+
abstract getDataChannelMaxMessageSize(): number | undefined;
189191
}

src/handlers/ReactNative106.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,6 +1297,10 @@ export class ReactNative106
12971297
return { dataChannel };
12981298
}
12991299

1300+
getDataChannelMaxMessageSize(): number | undefined {
1301+
return this._pc.sctp?.maxMessageSize;
1302+
}
1303+
13001304
private async setupTransport({
13011305
localDtlsRole,
13021306
localSdpObject,

src/handlers/Safari12.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,6 +1249,10 @@ export class Safari12
12491249
return { dataChannel };
12501250
}
12511251

1252+
getDataChannelMaxMessageSize(): number | undefined {
1253+
return this._pc.sctp?.maxMessageSize;
1254+
}
1255+
12521256
private async setupTransport({
12531257
localDtlsRole,
12541258
localSdpObject,

0 commit comments

Comments
 (0)