summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi Ichikawa <gimite@gmail.com>2010-09-13 22:13:40 +0900
committerHiroshi Ichikawa <gimite@gmail.com>2010-09-13 22:13:40 +0900
commit53b0887032a8422daf1e09e2867b271503034e34 (patch)
tree1dd08ba0f33f70cce93414d5090ead767738e031
parent9e766377188d461f2046d951cc12645d457eb8e8 (diff)
downloadweb-socket-js-53b0887032a8422daf1e09e2867b271503034e34.tar.gz
Making onclose event fired by ws.close() asynchronous.
Patch by kanaka. http://github.com/gimite/web-socket-js/issues#issue/35
-rw-r--r--web_socket.js19
1 files changed, 12 insertions, 7 deletions
diff --git a/web_socket.js b/web_socket.js
index ad65dd1..07a7612 100644
--- a/web_socket.js
+++ b/web_socket.js
@@ -117,16 +117,21 @@
};
WebSocket.prototype.close = function() {
- if (!this.__flash) return;
- this.readyState = this.__flash.getReadyState();
- if (this.readyState != WebSocket.OPEN) return;
- this.__flash.close();
+ var self = this;
+ if (!self.__flash) return;
+ self.readyState = self.__flash.getReadyState();
+ if (self.readyState != WebSocket.OPEN) return;
+ self.__flash.close();
// Sets/calls them manually here because Flash WebSocketConnection.close cannot fire events
// which causes weird error:
// > You are trying to call recursively into the Flash Player which is not allowed.
- this.readyState = WebSocket.CLOSED;
- if (this.__timer) clearInterval(this.__timer);
- if (this.onclose) this.onclose();
+ self.readyState = WebSocket.CLOSED;
+ if (self.__timer) clearInterval(self.__timer);
+ if (self.onclose) {
+ // Make it asynchronous so that it looks more like an actual
+ // close event
+ setTimeout(self.onclose, 1);
+ }
};
/**