There are two methods I know of, if you are interested. Limiting the delay between messages to roughly 30ms or more, or keeping timestamps:
The reaction to reaching this limit might either be queuing up the messages to send later, or creating/using more connections to circumvent. You could even have, say three sockets active at all times and distribute outgoing messages round-robin - and now your limit is guaranteed at 300/30 without much fail-checking.