https://kxming.medium.com/why-does-websocket-require-frontend-heartbeat-detection-and-is-there-a-native-detection-mechanism-42f30a6b466b