@@ -710,11 +710,11 @@ export default {
710710
711711 wsClient . onmessage = ( event ) => {
712712 if ( event . data !== '/stop/' && context . getters . isStartingTypingWsMessages ( ) ) {
713- console . info ( "streaming " , context . getters . isStartingTypingWsMessages ( ) ) ;
713+ console . info ( 'Streaming: ' , context . getters . isStartingTypingWsMessages ( ) ) ;
714714 context . commit ( 'pushWebSocketMessage' , event . data ) ;
715715 context . dispatch ( 'typingWsMessages' )
716716 } else {
717- console . info ( 'stopping streaming' ) ;
717+ console . info ( 'Currently not streaming' ) ;
718718 }
719719 }
720720 }
@@ -1304,6 +1304,41 @@ export default {
13041304
13051305 const signedUrl = Signer . signUrl ( context . state . config . lex . streamingWebSocketEndpoint + '?sessionId=' + sessionId , accessInfo , serviceInfo ) ;
13061306 wsClient = new WebSocket ( signedUrl ) ;
1307+
1308+ // Add heartbeat logic
1309+ const HEARTBEAT_INTERVAL = 540000 ; // 9 minutes
1310+ const MAX_DURATION = 7200000 ; // 2 hours
1311+ const startTime = Date . now ( ) ;
1312+ let heartbeatTimer = null ;
1313+
1314+ function startHeartbeat ( ) {
1315+ if ( wsClient . readyState === WebSocket . OPEN ) {
1316+ const elapsedTime = Date . now ( ) - startTime ;
1317+ if ( elapsedTime < MAX_DURATION ) {
1318+ const pingMessage = JSON . stringify ( { action : 'ping' } ) ;
1319+ wsClient . send ( pingMessage ) ;
1320+ console . log ( 'Sending Ping:' , new Date ( ) . toISOString ( ) ) ;
1321+ heartbeatTimer = setTimeout ( startHeartbeat , HEARTBEAT_INTERVAL ) ;
1322+ } else {
1323+ console . log ( 'Stopped sending pings after reaching 2-hour limit.' ) ;
1324+ clearTimeout ( heartbeatTimer ) ;
1325+ }
1326+ }
1327+ }
1328+ wsClient . onopen = ( ) => {
1329+ console . log ( 'WebSocket Connected' ) ;
1330+ startHeartbeat ( ) ;
1331+ } ;
1332+
1333+ wsClient . onclose = ( ) => {
1334+ console . log ( 'WebSocket Closed' ) ;
1335+ clearTimeout ( heartbeatTimer ) ;
1336+ } ;
1337+
1338+ wsClient . onerror = ( error ) => {
1339+ console . log ( 'WebSocket Error' , error . message ) ;
1340+ clearTimeout ( heartbeatTimer ) ;
1341+ } ;
13071342 } ,
13081343 typingWsMessages ( context ) {
13091344 if ( context . getters . wsMessagesCurrentIndex ( ) < context . getters . wsMessagesLength ( ) - 1 ) {
0 commit comments