Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow disabling ping/pong? #312

Open
STRML opened this issue Mar 5, 2015 · 8 comments
Open

Allow disabling ping/pong? #312

STRML opened this issue Mar 5, 2015 · 8 comments

Comments

@STRML
Copy link

@STRML STRML commented Mar 5, 2015

It would be nice if a 0 value for pingInterval or pingTimeout could disable ping/pong checking entirely.

When used with an abstraction layer like Primus, the ping/pong is redundant and can sometimes cause situations where engine.io terminates the connection and Primus doesn't pick up on it. In those cases Primus might not reconnect.

@3rd-Eden
Copy link
Contributor

@3rd-Eden 3rd-Eden commented Mar 6, 2015

@STRML if Primus doesn't pick up those connection terminations it's a bug in Primus so please report that in https://github.com/primus/primus as for the disabling of ping/pong's. I would love to see that as well.

Loading

@darrachequesne
Copy link
Member

@darrachequesne darrachequesne commented Oct 24, 2016

Closed due to inactivity, please reopen if needed.

Loading

@lpinca
Copy link
Contributor

@lpinca lpinca commented Jan 22, 2017

Maybe it makes sense to reopen as this was a feature request which I also support.

Loading

@darrachequesne
Copy link
Member

@darrachequesne darrachequesne commented Jan 22, 2017

PR is welcome!

Loading

@lpinca
Copy link
Contributor

@lpinca lpinca commented Jan 22, 2017

@darrachequesne thanks.
If I'm not wrong Engine.IO sends ping messages from client to server. We are currently doing the same in Primus but just FYI we are considering reversing the direction of pings and make the server send them to the client as browsers started to throttle timers. See primus/primus#348 if you are interested.

Loading

@darrachequesne
Copy link
Member

@darrachequesne darrachequesne commented Jan 22, 2017

@lpinca You're right, pings are sent by the client. But a timer is set on both the client and the server (allowing to detect any unavailability from the other side), isn't that the case with primus?

Loading

@lpinca
Copy link
Contributor

@lpinca lpinca commented Jan 22, 2017

Yes, but the client timer that sends the ping is delayed by the browser so the server incorrectly closes the connection.
Imagine that you used setTimeout(sendPing, 20000); on the client. The sendPing callback is not actually called after 20 sec but after 40 sec.

Hope it makes sense :)

Loading

@STRML
Copy link
Author

@STRML STRML commented Jan 22, 2017

Loading

darrachequesne added a commit that referenced this issue Feb 3, 2020
The ping packets will now be sent by the server, because the timers set in the browsers are not
reliable enough. We suspect that a lot of timeout problems came from timer being delayed on the
client-side.

Breaking change: v3.x clients will not be able to connect anymore (they will send a ping packet and
timeout while waiting for a pong packet)

Related: #312
darrachequesne added a commit to socketio/engine.io-client that referenced this issue Feb 3, 2020
The ping packets will now be sent by the server, because the timers set in the browsers are not
reliable enough. We suspect that a lot of timeout problems came from timer being delayed on the
client-side.

Breaking change: v3.x clients will not be able to connect anymore (they will send a ping packet and
timeout while waiting for a pong packet)

Related: socketio/engine.io#312
darrachequesne added a commit to socketio/engine.io-client that referenced this issue Feb 4, 2020
The ping packets will now be sent by the server, because the timers set
in the browsers are not reliable enough. We suspect that a lot of
timeout problems came from timers being delayed on the client-side.

Breaking change: v3.x clients will not be able to connect anymore (they
will send a ping packet and timeout while waiting for a pong packet).

Related: socketio/engine.io#312
darrachequesne added a commit that referenced this issue Feb 4, 2020
The ping packets will now be sent by the server, because the timers set
in the browsers are not reliable enough. We suspect that a lot of
timeout problems came from timers being delayed on the client-side.

Breaking change: v3.x clients will not be able to connect anymore (they
will send a ping packet and timeout while waiting for a pong packet).

Related: #312
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
4 participants