As I understand, interaction between Blynk server and IoT end device is using HTTP. Suppose I use the app to turn on/off an LED connected to Arduino. The trigger goes to the Blynk server but how does the server relay this to the Arduino? My understanding is that client-server interaction is based on request and response. Is the Arduino regularly polling the server, which would be inefficient?
I just want to know how it is implemented under the hood because I want devices not to do polling.
No. Blynk works over TCP or SSL/TLS connection (if hardware supports). However HTTP option also available if needed.
It is not.
In general it depends on your widget settings. Widgets work in 2 modes - PUSH mode and Frequency Reading mode. In frequency reading mode app (when it is active and open) polling server and server polling hardware.
In Push mode you send commands via Blynk.virtualWrite when necessary.
All this is possible as App and Hardware has opened TCP/SSL keep-alive connections.
Thanks for the quick response. I checked out the link about Push and Freq Reading modes. Definitely useful.
Given that TCP/SSL keep-alive connections are used, will there be scaling up issues at the server? I assume if there are tens of thousands of apps and devices, server has to maintain a TCP connection for each one.