Develop.track strophe handlers #238
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Made/Proposed changes:
QB.disconnectfollowed byQB.connectcan cause event handlers to be registered with Strophe multiple times. For instance, if a user has assigned a functionmyMessageListenerviaQB.chat.onMessageListener = myMessageListener;that function would be called twice for the same new message after aQB.connect, thenQB.disconnectand secondQB.connect.This pull request fixes this issue by tracking references to event handlers via an extension method placed on the Strophe connection. It then removes those existing event handlers from Strophe during a second call to
ChatProxy.connectthat enters thecase Strophe.Status.CONNECTED:block.Checkin info below:
How should this be manually tested?
####Fail case
connection.XDeleteHandlers();in qbChat'sconnectmethod (line 563 in pull request) so that it is not executed.QB.chat.onMessageListener = function(msg) { console.log(JSON.stringify(msg)); };QB.disconnectcommand followed by aQB.reconnectcommand with the same user used in step 3.####Success Case
connection.XDeleteHandlers();in qbChat'sconnectmethod (line 563 in pull request) so that it does fire.QB.chat.onMessageListener = function(msg) { console.log(JSON.stringify(msg)); };QB.disconnectcommand followed by aQB.reconnectcommand with the same user used in step 3.Does the documentation need an update?
No.