sockjs / sockjs-node

WebSocket emulation - Node.js server
http://sockjs.org
MIT License
2.09k stars 309 forks source link

Allow disabling or configuring of websocket's 10-second heartbeat timeout #219

Open jcheng5 opened 7 years ago

jcheng5 commented 7 years ago

The websocket transport has a hardcoded 10 second timer:

https://github.com/sockjs/sockjs-node/blob/61bba467d9d6b980a651070ed563f59d812e824e/src/trans-websocket.coffee#L99

If the websocket is sending a large message over a slow link to the client, then it may take more than 10 seconds for the heartbeat to actually arrive. A big improvement would be to wait until the heartbeat is actually sent to start the timer, but even then, the client may have large messages it's sending to the server too, which a heartbeat response would be queued behind.

I'm not necessarily asking for a change to the default behavior, but it would be great to be able to disable or configure this timeout, like disconnect_delay for the xhr-based transports.

(If you like I can put together a PR for this, but I wanted to first ask if such a patch would be welcome.)

brycekahle commented 6 years ago

A big improvement would be to wait until the heartbeat is actually sent to start the timer

I don't see a way to register a callback with faye-websocket-node for when this happens.

If you like I can put together a PR for this

I would accept a PR to configure the amount of time to wait for a heartbeat reply.