See: #2869 (review)
I don't like the existing getOffset method that constructs one from the LSN and a _0 suffix. The offset being constructed from an LSN is a backend implementation detail we should not depend on. I think we had this in my original POC as a work around, but we really should replace this by adding the actual offset on the up-to-date message, at least in SSE mode.
I would advocate for adding the actual offset to all up-to-date messages, on both SSE and long polling mode, it seems like a sensible place to place it.