They're also fine for human consumption (“50 minutes ago”, etc.), aren't they?
Which makes them part of the application layer, not the protocol layer. If your client wants to display those messages, it can look for a timestamp key in the message content.
Since we are on the topic of timestamps: What is their data type? Unsigned 32 bit integer unix time? Unsigned 64 bit integer unix time? An IEEE float (32 or 64 bit)? A series of characters matching the regex [0..9]*
? Or [0..9]+
? Or perhaps [0..9]*(\.[0..9]*)?
? What about NaN
, Infinity
?
When I got a floating point timestamp when testing the rust implementation, I literally stopped working on it for a few days, out of frustration...
monotonic timestamps could be a should not a must.