Для работы с WebSocket на сервере понадобится постоянно запущенный PHP процесс.
Не как обычно, запрос-PHP-ответ – а постоянно работающий на сервере PHP-файл, в нём WebSocket сервер, который слушает на каком-то порте. Принимает и держит открытыми подключения от клиентов. Реагирует на события сообщений от них, отправляет что-то в ответ.
Например, поставьте
Swoole, вот
пример кода, там и сервер и клиентский JS. Для локального теста достаточно запустить
server.php
из примера – он и HTTP сервер, который отдаст веб-страницу с нужным JS, и WebSocket сервер.