Hit the problem endpoint, grab a one-time token. The token expires in 60 minutes, so take your time.
Connect to our WebSocket server by appending your token to
Before we explain the challenge, know this: the server will send you
ping! messages in random intervals of
So a short while after connecting you'll receive your first
ping! message. This is your cue to send back the time after which it was sent. Obviously, due to network latency, the time measured on your end will be slightly different than the intented interval - it's your task to measure time and properly detect which interval was used by the server. Depending on your approach, you may even detect that some messages arrive slightly faster than expected. Something to think about.
Anyway, send back the detected interval (e.g.
700). You have until the next
ping! message to do so. If you fail to send back a value before then, the next ping won't be a ping, but a message explaining how sorry the server feels about it, but it has to close the connection. If this happens, you'll have to reconnect and start over.
If you send back the proper interval, the server will confirm your answer immediately with a simple
good! message. These messages don't influence when the
ping! messages are sent, so ignore those when measuring intervals. Only look at
Keep the conversation up sufficiently long, and the server will reward you with a secret key.
Submit that secret key to the solution endpoint and grab your reward.
Problem JSON format will be in the following format:
token: a token to use when connecting to the websocket server
Solution JSON structure:
secret: the secret phrase you got from the websocket server