Gottox / socket.io-java-client

Socket.IO Client Implementation in Java
MIT License
953 stars 387 forks source link

Timer already cancelled #48

Open fatshotty opened 11 years ago

fatshotty commented 11 years ago

hello there I've found this error log in my application

Socket encountered error
Error received: Timeout Error. No heartbeat from server within life time of the socket. closing.
Try reconnecting socket after 5000
Trying to connect to server
URL found: http://mydomain.com:80
Server will be http://mydomain.com:80
java.lang.IllegalStateException: Timer already cancelled.
  at java.util.Timer.sched(Timer.java:354)
  at java.util.Timer.schedule(Timer.java:170)
  at io.socket.IOConnection.reconnect(IOConnection.java:769)
  at io.socket.IOConnection.transportDisconnected(IOConnection.java:562)
  at io.socket.WebsocketTransport.onClose(WebsocketTransport.java:75)
  at org.java_websocket.client.WebSocketClient.onWebsocketClose(WebSocketClient.java:389)
  at org.java_websocket.WebSocketImpl.closeConnection(WebSocketImpl.java:412)
  at org.java_websocket.WebSocketImpl.closeConnection(WebSocketImpl.java:420)
  at org.java_websocket.WebSocketImpl.eot(WebSocketImpl.java:434)
  at org.java_websocket.client.WebSocketClient.interruptableRun(WebSocketClient.java:281)
  at org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:204)
  at java.lang.Thread.run(Thread.java:680)
Error occurs Error while handshaking
io.socket.SocketIOException: Error while handshaking
  at io.socket.IOConnection.handshake(IOConnection.java:325)
  at io.socket.IOConnection.access$600(IOConnection.java:42)
  at io.socket.IOConnection$ConnectThread.run(IOConnection.java:202)
Caused by: java.net.UnknownHostException: mydomain.com
  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
  at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
  at java.net.Socket.connect(Socket.java:529)
  at sun.net.NetworkClient.doConnect(NetworkClient.java:158) 
  at sun.net.www.http.HttpClient.openServer(HttpClient.java:388)
  at sun.net.www.http.HttpClient.openServer(HttpClient.java:523)
  at sun.net.www.http.HttpClient.<init>(HttpClient.java:227)
  at sun.net.www.http.HttpClient.New(HttpClient.java:300)
  at sun.net.www.http.HttpClient.New(HttpClient.java:317)
  at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
  at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
  at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
  at io.socket.IOConnection.handshake(IOConnection.java:316)
  ... 2 common frames omitted

I wonder, is it a goog idea to create a new Timer here https://github.com/Gottox/socket.io-java-client/blob/master/src/io/socket/IOConnection.java#L435

I mean, somenthing like this

backgroundTimer.cancel();
backgroundTimer = new Timer("backgroundTimer");

in order to avoid error while reconnecting?

Thanks

this issue could be related to #44