簡體   English   中英

可以在發布之前通過Thruway PubSub允許修改消息嗎?

[英]can Thruway PubSub allow amend message before publish?

聊天應用示例。

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

服務器插入了服務器日期時間(dd-mmm-yyyy hh:mm)。 我可以在Ratchet中輕松完成。
Ratchet.Wamp.WampServerInterface API文檔
在OnPublish內部,我可以在真正發布之前在其中修改消息。

Thruway可以做同樣的事情嗎? 我找不到任何Thruway文檔,並且看到了示例,但沒有找到想要的文件。 通道實例

我認為如果需要完成此操作,則可以使用稍微不同的體系結構。 我相信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);
    }
}

然后,在啟動時僅使用此類而不是默認路由器即可。

如果有機會,我還沒有嘗試過此代碼。 這個想法應該可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM