- Check the logs written by the hub on
stderr
, they contain the exact reason why the token has been rejected - Be sure to set a secret key (and not a JWT) in
JWT_KEY
(or inSUBSCRIBER_JWT_KEY
andPUBLISHER_JWT_KEY
) - If the secret key contains special characters, be sure to escape them properly, especially if you set the environment variable in a shell, or in a YAML file (Kubernetes...)
- The publisher always needs a valid JWT, even if
ALLOW_ANONYMOUS
is set to1
, this JWT must have a property namedpublish
. To dispatch private updates, thepublish
property must contain the list of topic selectors this publisher can use (example) - The subscriber needs a valid JWT only if
ALLOW_ANONYMOUS
is set to0
(default), or to subscribe to private updates, in this case the JWT must have a property namedsubscribe
and containing an array of topic selectors (example)
For both the publish
and subscribe
properties, the array can be empty to publish only public updates, or set it to ["*"]
to allow publishing updates for all topics.
If subscribing to the EventSource
in the browser doesn't work (the browser instantly disconnects from the stream or complains about CORS policy on receiving an event), check that you've set a proper value for CORS_ALLOWED_ORIGINS
on running Mercure. It's fine to use CORS_ALLOWED_ORIGINS=*
for your local development.
Try our URI template tester to ensure that the template matches the topic.
How to process for Mercure to work in Mac OS Catalina:
- In the Finder on your Mac, locate the app that you want to open.
- Control-click on the app icon, then choose Open from the shortcut menu.
- Click Open.
Then you will have a warning, ignore it and close the Terminal.
Open a new Terminal in the Mercure folder.
Then just run the command line
JWT_KEY='!ChangeMe!' ADDR=':3000' DEMO=1 ALLOW_ANONYMOUS=1 CORS_ALLOWED_ORIGINS=* PUBLISH_ALLOWED_ORIGINS='http://localhost:3000' ./mercure
It will work.馃帄