Может ли 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);
}
}
Затем просто используйте этот класс вместо маршрутизатора по умолчанию при запуске.
Я не пробовал этот код, если у меня будет такая возможность. Идея должна работать, хотя.