Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I know you've already solved the problem but I'll answer anyway so people know what's going on.</p> <p>1) removeAllListeners() only removes the array of callbacks for the event in question; it does not affect any other events at all.</p> <p>When you define an eventListener (i.e. on('xyz', function(){}) you append the callback function to an array indexed by the name of the event supplied. This array is a member of the object in question, in your case the "webSocket" object. webSocket.on("createRoom", function(){}) adds the function to an object similar to</p> <pre><code>webSocket.listeners = { "createRoom: [ function ], "someOtherEvent": [ function, function, function ] } </code></pre> <p>webSocket.removeAllListeners('createRoom') will simply remove the createRoom key and its associated value from the object without affecting any other events:</p> <pre><code>webSocket.listeners = { "someOtherEvent": [ function, function, function ] } </code></pre> <p>2) Though the roomJoin and messageReceived events were defined within the createRoom event's callback function, they are still operating on the same instance of the webSocket object. So you end up with a listeners object similar to:</p> <pre><code>webSocket.listeners = { "createRoom: [ function ], "main/roomJoin: [ function ], "chat/messageReceived": [ function ] } </code></pre> <p>Combined with the information from point #1 above, webSocket.removeAllListeners('createRoom') will yield the following:</p> <pre><code>webSocket.listeners = { "main/roomJoin: [ function ], "chat/messageReceived": [ function ] } </code></pre> <p>Just because these two events are defined within a callback for another event does not mean they are in anyway associated to that "parent" event. As you've figured out by now, the only way to remove these listeners is to remove them explicitly:</p> <pre><code>$('#exitButton').on('click', function() { // Removes websocket.removeAllListeners('createRoom'); websocket.removeAllListeners('main/roomJoin'); websocket.removeAllListeners('chat/messageReceived'); }); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload