vshymanskyy / blynk-library-js

Blynk library for JS. Works with Browsers, Node.js, Espruino.
https://blynk.io/
MIT License
215 stars 67 forks source link

Fixed message id overflow #44

Closed Alexey-Tsarev closed 6 years ago

Alexey-Tsarev commented 6 years ago

The library sends a message id with zero (65535+1) and goes to infinite reconnect loop.

According to Blynk protocol, message id has 2 bytes (values more than 65536 are impossible): https://github.com/blynkkk/blynkkk.github.io/blob/master/BlynkProtocol.md

These situations should cause a connection drop, or reconnection attempt:
Message with ID=0 is received
Logs from local blynk server:
10:47:52.178 TRACE- Incoming id=65531, command=Ping, body=''
10:48:02.189 TRACE- Incoming id=65532, command=Ping, body=''
10:48:12.201 TRACE- Incoming id=65533, command=Ping, body=''
10:48:22.211 TRACE- Incoming id=65534, command=Ping, body=''
10:48:32.214 TRACE- Incoming id=65535, command=Ping, body=''
10:48:42.224 TRACE- Incoming id=0, command=Ping, body=''
10:48:42.696 TRACE- Hardware channel disconnect for UserKey{email='tsarev.alexey....', appName='Blynk'}, dashId ..., deviceId 0, token ....
10:48:42.713 TRACE- Changing device status. DeviceId 0, dashId 755399478
10:48:47.780 TRACE- Blynk protocol connection detected.
10:48:47.832 TRACE- Incoming LoginMessage{id=1, command=Login, body='...'}
10:48:47.866 DEBUG- completeLogin. [id: 0x87d8a1b1, L:/10.1.1.1:9444 - R:/10.1.1.15:55016]
10:48:47.883 TRACE- Connected device id 0, dash id ...
10:48:47.883 INFO - tsarev.alexey... hardware joined.
10:48:47.884 TRACE- Hardware channel disconnect for UserKey{email='tsarev.alexey...', appName='Blynk'}, dashId ..., deviceId 0, token ....
10:48:47.884 TRACE- Changing device status. DeviceId 0, dashId 755399478
10:48:57.539 TRACE- Blynk protocol connection detected.
10:48:57.607 TRACE- Incoming LoginMessage{id=1, command=Login, body='...'}
10:48:57.608 DEBUG- Re registering hard channel. [id: 0xb4de609c, L:/10.1.1.1:9444 - R:/10.1.1.15:55018]
10:48:58.257 DEBUG- completeLogin. [id: 0xb4de609c, L:/10.1.1.1:9444 - R:/10.1.1.15:55018]
10:48:58.257 TRACE- Connected device id 0, dash id ...
10:48:58.257 INFO - tsarev.alexey... hardware joined.
10:48:58.261 TRACE- Hardware channel disconnect for UserKey{email='tsarev.alexey...', appName='Blynk'}, dashId 755399478, deviceId 0, token ....
Alexey-Tsarev commented 6 years ago

"Real" logs from Blynk server (with the enabled change):

11:08:23.443 TRACE- Incoming id=65524, command=Ping, body=''
11:08:33.461 TRACE- Incoming id=65525, command=Ping, body=''
11:08:43.479 TRACE- Incoming id=65526, command=Ping, body=''
11:08:53.496 TRACE- Incoming id=65527, command=Ping, body=''
11:09:03.515 TRACE- Incoming id=65528, command=Ping, body=''
11:09:13.533 TRACE- Incoming id=65529, command=Ping, body=''
11:09:23.550 TRACE- Incoming id=65530, command=Ping, body=''
11:09:33.569 TRACE- Incoming id=65531, command=Ping, body=''
11:09:43.586 TRACE- Incoming id=65532, command=Ping, body=''
11:09:53.604 TRACE- Incoming id=65533, command=Ping, body=''
11:10:03.622 TRACE- Incoming id=65534, command=Ping, body=''
11:10:13.639 TRACE- Incoming id=65535, command=Ping, body=''
11:10:23.710 TRACE- Incoming id=1, command=Ping, body=''
11:10:33.728 TRACE- Incoming id=2, command=Ping, body=''
11:10:43.747 TRACE- Incoming id=3, command=Ping, body=''
11:10:53.764 TRACE- Incoming id=4, command=Ping, body=''
11:11:03.783 TRACE- Incoming id=5, command=Ping, body=''
11:11:13.801 TRACE- Incoming id=6, command=Ping, body=''
11:11:23.819 TRACE- Incoming id=7, command=Ping, body=''
11:11:33.834 TRACE- Incoming id=8, command=Ping, body=''
11:11:43.844 TRACE- Incoming id=9, command=Ping, body=''
11:11:53.854 TRACE- Incoming id=10, command=Ping, body=''
11:12:03.872 TRACE- Incoming id=11, command=Ping, body=''
11:12:13.889 TRACE- Incoming id=12, command=Ping, body=''
11:12:23.908 TRACE- Incoming id=13, command=Ping, body=''
11:12:33.926 TRACE- Incoming id=14, command=Ping, body=''
11:12:43.943 TRACE- Incoming id=15, command=Ping, body=''
vshymanskyy commented 6 years ago

Thanks!

guymcswain commented 6 years ago

Can you please publish this PR to npm?

vshymanskyy commented 6 years ago

Sure. Will do soon

On Wed, 25 Jul 2018, 15:25 Guy McSwain, notifications@github.com wrote:

Can you please publish this PR to npm?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/vshymanskyy/blynk-library-js/pull/44#issuecomment-407736830, or mute the thread https://github.com/notifications/unsubscribe-auth/ABb9lKkF8DmHQB_hVr6kfZffiT6edYDkks5uKGPWgaJpZM4UlI6M .