Skip to content

Commit

Permalink
TF-3336 Make Echo ping of web socket optional
Browse files Browse the repository at this point in the history
  • Loading branch information
tddang-linagora committed Dec 18, 2024
1 parent 050a885 commit 6c651d3
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 2 deletions.
24 changes: 24 additions & 0 deletions docs/adr/0056-web-socket-ping-strategy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 56. Web Socket Ping Strategy

Date: 2024-12-16

## Status

Accepted

## Context

- Echo ping method takes too much resources from the server
- Server implemented ping frame

## Decision

- Twake Mail no longer have to implement Echo ping
- Browser will automatically send pong frame as default implementation
- Echo ping will still be left as an option in `env.file` through `WS_ECHO_PING`
- Set it to `true` if you want to use Echo ping
- Set it to `false` or left it as is if you don't want to use Echo ping

## Consequences

- Server resources used will be reduced
12 changes: 12 additions & 0 deletions docs/configuration/ws_echo_ping_configuration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## Configuration Web Socket Echo Ping

### Context
- Echo ping method is optional
### How to config
In [env.file]:
- If you want to use Echo ping:
```WS_ECHO_PING=true```
- If you don't want to use Echo ping:
```WS_ECHO_PING=false```
or
```WS_ECHO_PING=```
3 changes: 2 additions & 1 deletion env.file
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ APP_GRID_AVAILABLE=supported
FCM_AVAILABLE=supported
IOS_FCM=supported
FORWARD_WARNING_MESSAGE=
PLATFORM=other
PLATFORM=other
WS_ECHO_PING=
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import 'package:tmail_ui_user/features/push_notification/presentation/extensions
import 'package:tmail_ui_user/features/push_notification/presentation/listener/email_change_listener.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/listener/mailbox_change_listener.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
import 'package:web_socket_channel/web_socket_channel.dart';

class WebSocketController extends PushBaseController {
Expand Down Expand Up @@ -79,7 +80,9 @@ class WebSocketController extends PushBaseController {
_retryRemained = 3;
_webSocketChannel = success.webSocketChannel;
_enableWebSocketPush();
_pingWebSocket();
if (AppConfig.isWebSocketEchoPingEnabled) {
_pingWebSocket();
}
_listenToWebSocket();
}

Expand Down
2 changes: 2 additions & 0 deletions lib/main/utils/app_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,6 @@ class AppConfig {
static String get _platformEnv => dotenv.get('PLATFORM', fallback: 'other');

static bool get isSaasPlatForm => _platformEnv.toLowerCase() == saasPlatform;

static bool get isWebSocketEchoPingEnabled => dotenv.get('WS_ECHO_PING', fallback: 'false') == 'true';
}

0 comments on commit 6c651d3

Please sign in to comment.