dojox.cometd - Defekter “unsubscribe”-Befehl
Donnerstag, Oktober 18th, 2007Dojo bietet für den Cometd-Server einer passende Schnittstelle an, die auf dem Bayeux-Protokoll aufbaut, und genutzt wird um sich bei Kanälen an- bzw. abzumelden. Die Befehle hiefür lauten “subscribe” und “unsubscribe”. Unsubscribe ist jedoch noch mit einem Bug gespickt.
Folgendes Beispiel soll dies verdeutlichen:
dojox.cometd.subscribe('/foo/test', this, 'foo' );
dojox.cometd.unsubscribe('/foo/test', this, 'foo' );
dojox.cometd.subscribe('/foo/test', this, 'foo' );
dojox.cometd.unsubscribe('/foo/test', this, 'foo' );
dojox.cometd.subscribe('/foo/test', this, 'foo' );
dojox.cometd.publish( '/foo/test', { } );
In diesem aufgezeigten Fall, deaktiviert dojox zwar den gebuchten Kanal, jedoch nur temporär, was dazu führt, dass nach dem Publish die Funktion “foo” 3x aufgerufen wird. Da dieser Bug auch in der Version 0.9 von Dojo noch vorhanden ist, gibt es einen Patch, der jedoch manuell nachgetragen werden muss.
Eine Anleitung hierzu findet man unter: