Long time before detection of client disconnection and push notification (#63)
Closed
Andrzej Wójcik (Tigase) opened 7 years ago

Very often when the client is still connected in the background and connection is broken it leads to a big delay between detection of disconnection on a server side and delivery of push notification to the client.

Andrzej Wójcik (Tigase) commented 7 years ago

%kobit This task is related to email exchange we had about first push notification not being delivered to the client. After my investigation, I've found that XMPP client contributed partially to this issue and I'm working on providing some improvements in this area. This will be part of build no. 7 as well.

Andrzej Wójcik (Tigase) commented 7 years ago

I've found that XMPP client requests stream management resumption time of 1 hour even when push notifications are enabled. This value is not allowed by our servers (limit on the server side is set to 15 minutes) and the server responds to the client that it grants 15 minutes resumption timeout. So, if the client in push mode gets disconnected and the server is not aware of this, then the first message sent to this client will start resumption timeout leading to push notification being generated after 15 minutes.

In the case of push notifications being enabled, stream resumption should be set to far lower value. I've changed it to 90 seconds, so if the message is sent to the client which last connection was broken (but not detected that it is broken yet), then push notification will be sent to the client after around 90 seconds. So this delay will be smaller - 90 seconds instead of 900 seconds (15 minutes).

Artur Hefczyc commented 7 years ago

Seems to be working much better now. Notification about the first message was delivered right away and it was just a few minutes after client disconnected.

issue 1 of 1
Type
Bug
Priority
Normal
Assignee
RedmineID
5999
Version
Version 2.0
Issue Votes (0)
Watchers (0)
Reference
tigase/_clients/siskin-im#63
Please wait...
Page is in error, reload to recover