Может ли Thruway PubSub разрешить изменять сообщение перед публикацией?

Пример приложения чата.

Г-н А (07-Aug-2017 15:01): всем привет
Г-н Б (07-Aug-2017 15:20): Здравствуйте, г-н А

Сервер Дата Время (дд-ммм-гггг чч: мм) вставляется сервером. Что я могу легко сделать в Ratchet.
Документ API Ratchet.Wamp.WampServerInterface
Внутри OnPublish, где я могу изменить сообщение перед тем, как его опубликовать.

Может ли Thruway сделать то же самое? Я не могу найти документ Thruway, и я вижу примеры, но не нашел то, что я хочу. Thruway Примеры

1 ответ

Решение

Я думаю, что если бы мне нужно было это сделать, я бы использовал немного другую архитектуру. Я считаю, что идея WAMP состоит в том, чтобы сделать маршрутизатор очень универсальным. Вот почему у нас нет примеров этого.

"Весь код приложения должен находиться в компонентах приложения WAMP, а не в самом маршрутизаторе".

Это, как говорится, все равно не будет слишком сложно сделать то, что вы хотите сделать - но потребует перехвата сообщений. В идеале было бы неплохо переопределить Брокера - но у нас нет общего способа это исправить прямо сейчас. Таким образом, мы можем переопределить Маршрутизатор и проверить каждое сообщение:

class MyRouter extends Router {
    public function onMessage(TransportInterface $transport, Message $msg) {
        if ($msg instanceof PublishMessage) {
            if ($msg->getTopicName() == "mytopic") {
                // mangle the message in here
            }
        }

        parent::onMessage($transport, $msg);
    }
}

Затем просто используйте этот класс вместо маршрутизатора по умолчанию при запуске.

Я не пробовал этот код, если у меня будет такая возможность. Идея должна работать, хотя.

Другие вопросы по тегам