2016-04-28 153 views
1

我試圖用Spring集成連接我現有的Spring MVC應用程序,但是我找不到如何向特定客戶端發送TCP消息。將Spring MVC與Spring集成集成

我有很多設備通過TCP連接到我的服務器,我使用DirectChannel來連接它們。

當我打電話給SimpleGatewy.send()時,有什麼方法可以指定將接收消息的客戶端?

謝謝。

+0

歡迎來到StackOverflow。請閱讀我們的[問]頁面提示如何改善您的問題。 偉大的問題往往會提供更快,更好的社區回答 – ochi

回答

0

請參閱使用網關的tcp-client-server示例 - 可以從任何代碼(包括控制器)調用此示例。

+0

感謝您的快速回答加里。我已經做了這樣的例子,但我不知道如何從Controller發送消息到特定的連接客戶端(因爲兩者都沒有直接連接)。我嘗試過路由器和橋接器,但目前還沒有工作(或者我可能不知道如何設置它們)。有沒有辦法通過ID來識別每個連接,以便使用此ID發送消息?我很欣賞任何反饋。 – Arc

+0

我不知道如何識別特定的客戶端,但是當他們連接時,可以使用ApplicationListener來獲取包含'connectionId'的事件。要將消息路由到特定套接字,您需要將「ip_connectionId」標頭設置爲該值。您可以通過網關上的'@ Header'註釋或其他幾種技術來做到這一點。標題常量在'IpHeaders.CONNECION_ID'中。有關TCP事件的信息,請參閱[文檔](http://docs.spring.io/spring-integration/reference/html/ip.html#tcp-events)。 –

+0

再次你好,加里,謝謝你的關注。我已經有點前進了。現在我試圖向多個客戶端發送任意消息,我擁有他們的所有connectionId,但我不知道如何向每個客戶端發送消息,因爲例如TcpOutGate需要只接收一個ip:port的connectionFactory。如果我只有它的connectionId,我怎麼能發送消息給客戶端? 謝謝。 – Arc