Socket.io-client-java: When does the socket stop to try to emit a message when connection is lost?

Created on 29 Jun 2016  路  8Comments  路  Source: socketio/socket.io-client-java

Hi, I couldn't find an answer to this in the docs.
So when I switch off internet on my phone, emit a message and then turn internet back on (after a couple of seconds), the message is sent to the server. If I switch it off and wait longer before turining it back on, the message is not emitted. So does some event (Socket.EVENT_CONNECTION_ERROR, Socket_EVENT_DISCONNECT, ...) mean that retrying to emit the message is stopped?

Most helpful comment

Yeah, the question is, how can I kow that the re-emit won't be executed anymore, so that I can shedule it manually again? "More than one minute" is not exact enough ;) (or is it??) I would think that re-emitting stops when the first EVENT_CONNECTION_ERROR or EVENT_DISSCONNECT occurs, but I can't find sth that assures that. Another solution would be to cancel an emit, but I also don't know if that's possible..

All 8 comments

I think SocketIO not implemented re emit function because I have found the same problem,an than I implemented a message buffer to handle re emit when SocketIO reconnect by self.

As I said, the socket apparently does reemit. When I call socket.emit while there is no connection to the internet and then turn the wifi on after some seconds, the message is sent to the server

I think appear re-emit only in a few seconds when socketio reconnect,if no connection too long(more than one minute),will not happen. I have tried it so I manually handle it ensure message can be re-emit.

Yeah, the question is, how can I kow that the re-emit won't be executed anymore, so that I can shedule it manually again? "More than one minute" is not exact enough ;) (or is it??) I would think that re-emitting stops when the first EVENT_CONNECTION_ERROR or EVENT_DISSCONNECT occurs, but I can't find sth that assures that. Another solution would be to cancel an emit, but I also don't know if that's possible..

You right, these all my guess so expression is not exact enough.
Currently there is no API to control re-emit.I just consider how to avoid triggers socketio re-emit.

From what I see here: https://github.com/socketio/socket.io-client-java/blob/master/src/main/java/io/socket/client/Socket.java#L391 apparently it always tries to reemit? I tried again and even after 4 minutes of connection loss, it reemits. Apparently I made a mistake before.

hey mate, even though this issue is already older I am facing the exact problem in javascript instead of Java. It sometimes reemits the messages as soon as the connection is back online and it sometimes doesn't, or just a part of all the emits during that time. Did you figure something out in the mean time? Or did you stop working with socket io?

Sorry, I discontinued the project before I managed to find a fix. What you could do, is to handle the (re-)sending process yourself. And in order not to process duplicate messages on the server (in case socketIO does resend a message after an interrupted connection), you could include a timestamp and an expiry date in the message.
Don't know if that helps. good luck :)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

abhilash29 picture abhilash29  路  6Comments

emanuelet picture emanuelet  路  7Comments

arora-arpit picture arora-arpit  路  3Comments

yosuke-furukawa picture yosuke-furukawa  路  8Comments

NotNotMarshall picture NotNotMarshall  路  4Comments