license file
tighten up websocket code
reconnect with exponential backoff
reset attempt counter on manual 'reconnect'
send periodic pings
calculate message hash
message hash is the unique identifier
disconnect websocket when test is done
fix message hashing code
only request messages that we haven't seen