@@ -18,7 +18,7 @@ function sepiaFW_build_client_interface(){
1818 ClientInterface . setDemoMode = SepiaFW . webSocket . client . setDemoMode ;
1919 ClientInterface . isDemoMode = SepiaFW . webSocket . client . isDemoMode ;
2020
21- ClientInterface . closeClient = SepiaFW . webSocket . client . closeConnection ;
21+ ClientInterface . closeClient = SepiaFW . webSocket . client . closeConnection ; //argument: forceReset, forceResetCallback
2222 ClientInterface . pauseClient = SepiaFW . webSocket . client . closeConnection ;
2323 ClientInterface . resumeClient = SepiaFW . webSocket . client . instaReconnect ;
2424
@@ -58,6 +58,7 @@ function sepiaFW_build_client_interface(){
5858
5959 //states and settings
6060 ClientInterface . allowBackgroundConnection = false ;
61+ ClientInterface . isMessagePending = false ;
6162
6263 //some constants for link sharing
6364 ClientInterface . deeplinkHostUrl = "https://b07z.net/dl/sepia/index.html" ;
@@ -1200,6 +1201,7 @@ function sepiaFW_build_webSocket_client(){
12001201 SepiaFW . debug . log ( "WebSocket: connection open" ) ;
12011202 clearTimeout ( reconTimer ) ;
12021203 clearTimeout ( instaReconTimer ) ;
1204+ clearTimeout ( closeConnectionTimer ) ;
12031205 connectionIsOpen = true ;
12041206 connectAttempts = 0 ;
12051207 isConnecting = false ;
@@ -1221,7 +1223,7 @@ function sepiaFW_build_webSocket_client(){
12211223 }
12221224
12231225 //close connection
1224- Client . closeConnection = function ( ) {
1226+ Client . closeConnection = function ( forceReset , forceResetCallback ) {
12251227 //TODO: consider tryReconnect here. When force close set it in the calling function.
12261228 tryReconnect = false ;
12271229 clearTimeout ( reconTimer ) ;
@@ -1230,7 +1232,19 @@ function sepiaFW_build_webSocket_client(){
12301232 if ( webSocket ) {
12311233 webSocket . close ( ) ;
12321234 }
1235+ if ( forceReset ) {
1236+ clearTimeout ( closeConnectionTimer ) ;
1237+ closeConnectionTimer = setTimeout ( function ( ) {
1238+ if ( isConnecting || connectionIsOpen ) {
1239+ webSocket . onclose ( ) ;
1240+ if ( forceResetCallback ) forceResetCallback ( ) ;
1241+ } else {
1242+ if ( forceResetCallback ) forceResetCallback ( ) ;
1243+ }
1244+ } , 3000 ) ;
1245+ }
12331246 }
1247+ var closeConnectionTimer = undefined ;
12341248
12351249 //reconnect on close
12361250 var reconTimer ;
@@ -1418,9 +1432,14 @@ function sepiaFW_build_webSocket_client(){
14181432 //Message lost?
14191433 if ( messageQueue [ id ] ) {
14201434 //TODO: problems!
1435+ SepiaFW . client . isMessagePending = true ;
14211436 SepiaFW . debug . error ( "Message with ID '" + id + "' was not delivered (yet) after 7s!" ) ;
1437+ } else {
1438+ SepiaFW . client . isMessagePending = false ;
14221439 }
14231440 } , 3500 ) ;
1441+ } else {
1442+ SepiaFW . client . isMessagePending = false ;
14241443 }
14251444 } , 3500 ) ;
14261445 }
0 commit comments