A server implementing the Mercure SSE specification
Go to file
2024-03-11 14:39:58 +01:00
bin Initial config file parsing logic 2024-03-11 02:15:04 +01:00
doc Initial commit 2024-03-10 03:06:19 +01:00
src Subscription enumeration, tweaks 2024-03-11 14:39:58 +01:00
.gitignore Initial commit 2024-03-10 03:06:19 +01:00
composer.json Initial config file parsing logic 2024-03-11 02:15:04 +01:00
composer.lock Initial config file parsing logic 2024-03-11 02:15:04 +01:00
LICENSE Initial commit 2024-03-10 03:06:19 +01:00
Makefile Fixed topic gc bug 2024-03-11 01:40:05 +01:00
mercureactd.conf.dist Initial config file parsing logic 2024-03-11 02:15:04 +01:00
phpstan.neon Misc fixes, readme, comments 2024-03-10 16:23:46 +01:00
phpunit.xml Initial config file parsing logic 2024-03-11 02:15:04 +01:00
README.md Subscription enumeration, tweaks 2024-03-11 14:39:58 +01:00

Mercureact

This is an implementation of the Mercure realtime protocol on steroids, built using ReactPHP.

Mercureact is under development, and not ready for use in anything important.

It is intended to be used standalone, but it may also be integrated into another PHP application.

Installing

As PHAR:

  • Download the latest release from the forge.

As Composer dependency:

  • composer require noccylabs/mercureact

Using as PHAR

TODO.

# Make a copy of the dist config and edit it
$ cp mercureact.conf.dist mercureact.conf
$ editor mercureact.conf
# Use the config file when launching
$ ./mercureact.phar -c mercureact.conf

Using as dependency

TODO.

ToDos

  • Read config from file
  • Security Security Security
    • Check JWTs on connect
    • Check claims on subscribe and publish
    • WebSocket authentication
    • Extract JWT claims to request attributes, instead of JWTToken
  • Subscription/Topic manager
    • Unify distribution
    • Enumerate subscriptions and topics
  • Publish events
  • Server-Side Events distributor
    • Distribute events over SSE
  • WebSocket distributor
    • Setup subscriptions
    • Dynamic subscriptions
    • Distribute events over WS
  • Break out HTTP middleware into classes
  • HTTP middleware unittests
  • Replay missed events based on event id
  • Figure out how to determine last event IDs
  • Metrics endpoint