diff options
author | Hiroshi Ichikawa <gimite@gmail.com> | 2010-09-13 22:13:40 +0900 |
---|---|---|
committer | Hiroshi Ichikawa <gimite@gmail.com> | 2010-09-13 22:13:40 +0900 |
commit | 53b0887032a8422daf1e09e2867b271503034e34 (patch) | |
tree | 1dd08ba0f33f70cce93414d5090ead767738e031 /web_socket.js | |
parent | 9e766377188d461f2046d951cc12645d457eb8e8 (diff) | |
download | web-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
Diffstat (limited to 'web_socket.js')
-rw-r--r-- | web_socket.js | 19 |
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); + } }; /** |