На самом деле WS в PHP не так уж и сложны. Можно взять RoadRunner и центрифугу, которые будут менеджить подключения и отправлять запросы в PHP и броадкастить из PHP.
Вот пример на ютубчике:
https://www.youtube.com/watch?v=AR9aCQWwXmk
Кроме того, можно запустить PHP в event-loop'е и накодить свою реализацию для вебсокетов. Минимальный набор небольшой:
https://github.com/buggregator/trap/tree/master/sr... , но это очень непростой путь и лучше не брать на себя реализацию и поддержку того, что уже реализовано и поддерживается другими.
Так что можно взять за базу swoole (
https://habr.com/ru/articles/427589/) или amphp (
https://github.com/amphp/websocket-server).
Mercure, как костыль над SSE, я бы не советовал, уж лучше брать сразу полноценный Websocket. Но это вкусовщина.