2

chat application example.

Mr A (07-Aug-2017 15:01) : hello all
Mr B (07-Aug-2017 15:20) : hello Mr A

The Server Date Time (dd-mmm-yyyy hh:mm) is inserted by Server. Which I can easy done in Ratchet.
Ratchet.Wamp.WampServerInterface api document
Inside the OnPublish, Where I can amend the message before really publish out.

Can Thruway do the same ? I cannot find any Thruway doc, and I see the examples but not found what I want.Thruway Examples

4

1 回答 1

3

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

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

话虽如此,做你想做的事情仍然不会太难 - 但需要拦截消息。理想情况下,覆盖 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);
    }
}

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

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

于 2014-08-07T13:52:19.627 回答