Thruway PubSub可以在发布之前修改消息吗?

时间:2014-08-07 07:37:22

标签: php websocket ratchet thruway

聊天应用程序示例。

  

A先生(2017年8月7日15:01):大家好   B先生(2017年8月7日15:20):你好A先生

服务器插入服务器日期时间(dd-mmm-yyyy hh:mm)。我可以在Ratchet中轻松完成。
Ratchet.Wamp.WampServerInterface api document
在OnPublish中,我可以在真正发布之前修改消息。

高路可以这样做吗?我找不到任何高速公路文档,我看到了示例但没找到我想要的内容。Thruway Examples

1 个答案:

答案 0 :(得分:3)

我认为如果我需要完成此任务,我会使用稍微不同的架构。我相信WAMP的想法是保持路由器非常通用。这就是为什么我们没有这方面的例子。

“所有特定于应用程序的代码都应该驻留在WAMP应用程序组件中,而不是驻留在路由器本身中。” -tobias

话虽如此,做你想做的事情仍然不会太难 - 但需要拦截这些信息。理想情况下,覆盖Broker会很好 - 但我们现在没有通用的方法来切换它。所以我们可以覆盖路由器并检查每条消息:

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);
    }
}

然后在启动时使用此类而不是默认路由器。

如果我有机会,我还没有尝试过这段代码。这个想法应该可行。