SSE is easy to shim! We use: https://github.com/Yaffle/EventSource/
EventSource natively supports this via the "Last-Event-ID" header (and can also be used by a shim to ensure it gets messages it missed). And in the case of a room style app you probably already have a room history that can be used to provide this data.
Edit: actually this looks to be a lot more sophisticated than the other shims i havr looked at and does indeed behave more like eventsource. Good job!
Addition: Verified. It doesn't disconnect between events (not long-polling).
However, why would I want to use a shim over websockets?
tl;dr websockets can fail in strange ways on mobile and when passed through proxies and corporate firewalls