I’m really curious to hear what other users think. In an early version of something very closely related to Spark, we used a TCP socket and sent commands for each step - we just sent a few characters with the new level and a newline to delineate (plus making sure to flush the buffer). It wasn’t realtime to the milisecond, but it was pretty close.
Another thing that helped was using socket.io which will automatically restart sockets, fallback to supported protocols if the desired one doesn’t work, etc. - unfortunately I don’t think you can use that on a Spark (though maybe something server-side only that will automatically restart the socket?).
In any case, you’d probably still have to make sure that it did something sensible if the connection was lost - e.g., enter a mode that tries to keep it level. Even in good conditions, the connection can drop, or at least be laggy.
You can also check out things like http://jqueryui.com/slider/ (or other jquery sliders) for inspiration - you can copy the code and bind a “send_level” function to the “change” event. More info at http://api.jqueryui.com/slider/
Excited to see how it works out!