Right now the close() call only calls __flash.close() if readyState is OPEN. But it should really call close any time that readyState is not CLOSED or CLOSING.
The case I ran into is when I want to do the following:
make a test connection
tell the server to setup for a connection
connect again
I call close on the test connection, but since it is ignored when CONNECTING, it eventually times out with a error. But by that time I have already issued a new connection, it causes the new connection to fail. close() should cancel CONNECTING state too.
Here is my recommended change:
--- a/web-socket-js/web_socket.js
+++ b/web-socket-js/web_socket.js
@@ -119,7 +119,10 @@
WebSocket.prototype.close = function() {
if (!this.__flash) return;
this.readyState = this.__flash.getReadyState();
- if (this.readyState != WebSocket.OPEN) return;
+ if ((this.readyState === WebSocket.CLOSED) ||
+ (this.readState === WebSocket.CLOSING)) {
+ return;
+ }
this.__flash.close();
// Sets/calls them manually here because Flash WebSocketConnection.close cannot fire events
// which causes weird error:
Right now the close() call only calls __flash.close() if readyState is OPEN. But it should really call close any time that readyState is not CLOSED or CLOSING.
The case I ran into is when I want to do the following:
I call close on the test connection, but since it is ignored when CONNECTING, it eventually times out with a error. But by that time I have already issued a new connection, it causes the new connection to fail. close() should cancel CONNECTING state too.
Here is my recommended change: