Hacker News new | ask | show | jobs
by chalas_r 1621 days ago
Mercure is an alternative to WebSocket that is especially useful for REST/GraphQL APIs. It's a protocol that builds on HTTP and Server-Sent Events thus is supported out of the box by browsers, mobile apps and IoT clients, and it doesn't suffer from most WebSocket limitations (e.g. header/cookie based authorization works):

https://mercure.rocks

2 comments

I love Server-Sent Events, but just as a heads up in case anyone doesn't know there are some limitations to SSE:

* Doesn't natively support binary data.

* If you're using HTTP/1.1 in the browser, you'll be severely limited in the number of SSE connections you can have going at a time. If you're on HTTP/2 then it's not a problem.

> it doesn't suffer from most WebSocket limitations (e.g. header/cookie based authorization works)

Don't WS connections send headers? What's the limitation here?

Actually neither the WebSocket nor the SSE browser APIs allow to send custom headers (see https://stackoverflow.com/q/4361173/4363634, https://stackoverflow.com/q/36201347/4363634). Point is that the Mercure protocol specifies the authorization part deeply so it's handled out of the box. With WebSocket you are on your own.