Skip to content

Commit 1425de8

Browse files
authored
Expose keep alive event configurarion in ec config and update defaults. (#3303)
1 parent c1aa188 commit 1425de8

File tree

4 files changed

+48
-11
lines changed

4 files changed

+48
-11
lines changed

config/config.sample.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,11 @@
1111
"features": {
1212
"feature_use_device_session_member_events": true
1313
},
14-
"ssla": "https://static.element.io/legal/element-software-and-services-license-agreement-uk-1.pdf"
14+
"ssla": "https://static.element.io/legal/element-software-and-services-license-agreement-uk-1.pdf",
15+
"matrix_rtc_session": {
16+
"wait_for_key_rotation_ms": 3000,
17+
"membership_event_expiry_ms": 6000000,
18+
"delayed_leave_event_delay_ms": 18000,
19+
"delayed_leave_event_restart_ms": 4000
20+
}
1521
}

src/config/ConfigOptions.ts

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface ConfigOptions {
1414
api_key: string;
1515
api_host: string;
1616
};
17+
1718
/**
1819
* The Sentry endpoint to which crash data will be sent.
1920
* This is only used in the full package of Element Call.
@@ -22,6 +23,7 @@ export interface ConfigOptions {
2223
DSN: string;
2324
environment: string;
2425
};
26+
2527
/**
2628
* The rageshake server to which feedback and debug logs will be sent.
2729
* This is only used in the full package of Element Call.
@@ -66,6 +68,7 @@ export interface ConfigOptions {
6668
* Allow to join group calls without audio and video.
6769
*/
6870
feature_group_calls_without_video_and_audio?: boolean;
71+
6972
/**
7073
* Send device-specific call session membership state events instead of
7174
* legacy user-specific call membership state events.
@@ -86,6 +89,7 @@ export interface ConfigOptions {
8689
* Defines whether participants should start with audio enabled by default.
8790
*/
8891
enable_audio?: boolean;
92+
8993
/**
9094
* Defines whether participants should start with video enabled by default.
9195
*/
@@ -109,19 +113,38 @@ export interface ConfigOptions {
109113
* How long (in milliseconds) to wait before rotating end-to-end media encryption keys
110114
* when someone leaves a call.
111115
*/
116+
wait_for_key_rotation_ms?: number;
117+
/** @deprecated use wait_for_key_rotation_ms instead */
112118
key_rotation_on_leave_delay?: number;
113119

114120
/**
115-
* How often (in milliseconds) keep-alive messages should be sent to the server for
116-
* the MatrixRTC membership event.
121+
* The duration (in milliseconds) after the most recent keep-alive (delayed leave event restart)
122+
* that the server waits before sending the leave MatrixRTC membership event.
123+
*/
124+
delayed_leave_event_delay_ms?: number;
125+
/** @deprecated use delayed_leave_event_delay_ms instead */
126+
membership_server_side_expiry_timeout?: number;
127+
128+
/**
129+
* The time interval (in milliseconds) at which the client sends membership keep-alive
130+
* messages to the server by restarting the timer for the delayed leave event.
117131
*/
132+
delayed_leave_event_restart_ms?: number;
133+
/** @deprecated use delayed_leave_event_restart_ms instead */
118134
membership_keep_alive_period?: number;
119135

120136
/**
121-
* How long (in milliseconds) after the last keep-alive the server should expire the
122-
* MatrixRTC membership event.
137+
* How long we wait before retrying after a network error on any of the requests.
123138
*/
124-
membership_server_side_expiry_timeout?: number;
139+
network_error_retry_ms?: number;
140+
141+
/**
142+
* The timeout (in milliseconds) after we joined the call, that our membership should expire
143+
* unless we have explicitly updated it.
144+
*
145+
* This is what goes into the m.rtc.member event expiry field and is typically set to a number of hours.
146+
*/
147+
membership_event_expiry_ms?: number;
125148
};
126149
}
127150

src/rtcSessionHelpers.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,18 @@ export async function enterRTCSession(
121121
...(useDeviceSessionMemberEvents !== undefined && {
122122
useLegacyMemberEvents: !useDeviceSessionMemberEvents,
123123
}),
124+
delayedLeaveEventRestartMs:
125+
matrixRtcSessionConfig?.delayed_leave_event_restart_ms ??
126+
matrixRtcSessionConfig?.membership_keep_alive_period,
124127
delayedLeaveEventDelayMs:
128+
matrixRtcSessionConfig?.delayed_leave_event_delay_ms ??
125129
matrixRtcSessionConfig?.membership_server_side_expiry_timeout,
126-
networkErrorRetryMs: matrixRtcSessionConfig?.membership_keep_alive_period,
127-
makeKeyDelay: matrixRtcSessionConfig?.key_rotation_on_leave_delay,
130+
networkErrorRetryMs: matrixRtcSessionConfig?.network_error_retry_ms,
131+
makeKeyDelay:
132+
matrixRtcSessionConfig?.wait_for_key_rotation_ms ??
133+
matrixRtcSessionConfig?.key_rotation_on_leave_delay,
134+
membershipEventExpiryMs:
135+
matrixRtcSessionConfig?.membership_event_expiry_ms,
128136
useExperimentalToDeviceTransport,
129137
},
130138
);

vite-embedded.config.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ export default defineConfig((env) =>
1818
output: "./config.json",
1919
data: {
2020
matrix_rtc_session: {
21-
key_rotation_on_leave_delay: 15000,
22-
membership_keep_alive_period: 5000,
23-
membership_server_side_expiry_timeout: 15000,
21+
wait_for_key_rotation_ms: 5000,
22+
delayed_leave_event_restart_ms: 4000,
23+
delayed_leave_event_delay_ms: 18000,
2424
},
2525
},
2626
},

0 commit comments

Comments
 (0)