alexwhitman / node-pushbullet-api

PushBullet API module for Node.js
165 stars 36 forks source link

Server disconnection is not detected #38

Closed eschava closed 2 years ago

eschava commented 6 years ago

I use pushbullet stream connection to listen for received messages in Node-Red "pushbullet in" node

When server disconnection occurs, this is not handled by client. Netstat shows

tcp        0      0 192.168.200.10:36578    104.154.164.197:443     ESTABLISHED 19338/node-red

but incoming messages are ignored. As far as I know Node-Red has code to reconnect client after disconnection happens, but looks like it is not notified about disconnection currently.

Experimenting, I've changed the line self.client = new WebSocketClient(); to self.client = new WebSocketClient({keepalive: true, keepaliveInterval: 60000});

Now reconnection is handled correctly, but netstat shows ugly number of old connections after several reconnects:

tcp        0      0 192.168.200.10:48166    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87871      0 192.168.200.10:39832    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48183    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:48180    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87917      0 192.168.200.10:39826    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48189    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87801      0 192.168.200.10:58696    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48160    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48198    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48154    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:39834    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:48182    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48190    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:48181    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87917      0 192.168.200.10:39814    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48169    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:48165    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:39819    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp    87917      0 192.168.200.10:39816    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87917      0 192.168.200.10:39824    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48188    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87801      0 192.168.200.10:58719    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48199    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:48205    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp    87801      0 192.168.200.10:58707    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48163    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87917      0 192.168.200.10:39815    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48155    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:39817    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:48184    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp        0      0 192.168.200.10:48164    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48161    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp    87801      0 192.168.200.10:58706    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87917      0 192.168.200.10:39804    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48167    104.154.164.197:443     ESTABLISHED 2942/node-red
tcp    87871      0 192.168.200.10:39831    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87963      0 192.168.200.10:39806    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87917      0 192.168.200.10:39813    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    88680      0 192.168.200.10:49502    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp        0      0 192.168.200.10:48162    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87825      0 192.168.200.10:39851    104.154.164.197:443     FIN_WAIT2   2942/node-red
tcp    87917      0 192.168.200.10:39825    104.154.164.197:443     FIN_WAIT2   2942/node-red

Could be there an option to always have only one active connection even after network reconnection happens?

Aymkdn commented 5 years ago

I'm looking for the same kind of thing. Any update about it ?

alexwhitman commented 5 years ago

I've just published a new version, 2.4.0, which should help. The Pushbullet stream sends a nop message every 30 seconds. If that message isn't seen then the stream will reconnect.