TF-3336 Make Echo ping of web socket optional
This commit is contained in:
@@ -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
|
||||
@@ -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=```
|
||||
@@ -6,4 +6,5 @@ APP_GRID_AVAILABLE=supported
|
||||
FCM_AVAILABLE=supported
|
||||
IOS_FCM=supported
|
||||
FORWARD_WARNING_MESSAGE=
|
||||
PLATFORM=other
|
||||
PLATFORM=other
|
||||
WS_ECHO_PING=
|
||||
@@ -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 {
|
||||
@@ -79,7 +80,9 @@ class WebSocketController extends PushBaseController {
|
||||
_retryRemained = 3;
|
||||
_webSocketChannel = success.webSocketChannel;
|
||||
_enableWebSocketPush();
|
||||
_pingWebSocket();
|
||||
if (AppConfig.isWebSocketEchoPingEnabled) {
|
||||
_pingWebSocket();
|
||||
}
|
||||
_listenToWebSocket();
|
||||
}
|
||||
|
||||
|
||||
@@ -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';
|
||||
}
|
||||
Reference in New Issue
Block a user