Socket closing without prompt
- Dominant language
- JavaScript
- Stars
- 502
- Forks
- 86
- PR merge metrics
- No merged PRs in 30d
Description
#### Support plan
* *is this issue currently blocking your project?* (yes/no): no
* *is this issue affecting a production system?* (yes/no): yes
#### Context
* *node version*: 16.0
* *module version*: 12.0.4
* *environment* (e.g. node, browser, native): browser (and node)
* *used with* (e.g. hapi application, another framework, standalone, ...): hapi application
* *any other relevant information*:
#### How can we help?
Some users in production are being unsubscribe from the socket without us really knowing why. Their internet access is supposedly stable...
I feel I am missing some cases of automatic unsubscribe so I must ask : what are the different cases where the socket might trigger the onUnsubscribe function ?
Here are the different declarations:
```js
/**CLIENT CODE connection **/
return this.socketClient.connect({
reconnect: true, //whether the client should try to reconnect
delay: 2000, //time in milliseconds to wait between each reconnection attempt, cumulative
maxDelay: 15000, //the maximum delay time in milliseconds between reconnections
retries: 10 //number of reconnection attempts
})
/** SERVER REGISTER **/
await server.register(
{
plugin: Nes,
options: {
heartbeat: {
interval: 15000,
timeout: 5000
},
auth: false
}
},
{
routes: process.env.ROOT_PATH ? {
prefix: ROOT_PATH
} : {}
}
);
this.serverFromRequest.subscription(this.subscribingPath , {
onSubscribe: (socket, path, params)=>{
/** SOME CODE that has nothing to do with network **/
//Managing page reloading by clearing a timeout
if (this.onUnsubscribeTimeout) {clearTimeout(this.onUnsubscribeTimeout)}
},
onUnsubscribe: (socket, path, params)=>{
/** SOME CODE that has nothing to do with network **/
const unloadTimeout = 15000;
this.onUnsubscribeTimeout = setTimeout(()=>{
/** SOME CODE saying what should happen when socket is closed ( basically send message to client saying Chat is closed)
}, unloadTimeout)
}
})
```
What do you think ?
Is the fact maxDelay very closed to unloadTimeout could explain the issue ?
Are my connect options not precise enough or too low ? Or the heartbeat maybe ?
What would be good production values according to your knowledge ?
Regards and thank you for nes !
Contributor guide
Assessment
This issue has not been assessed yet.