2016-04-28 22 views
1

Spring統合と既存のSpring MVCアプリケーションを接続しようとしていますが、特定のクライアントにTCPメッセージを送信する方法が見つかりません。Spring統合とSpring MVCの統合

多くのデバイスがTCPを介してサーバーに接続されており、DirectChannelを使用して接続しています。

SimpleGatewy.send()を呼び出したときにメッセージを受け取るクライアントを指定する方法はありますか?

ありがとうございました。

+0

ようこそStackOverflow。あなたの質問を改善するためのヒントについては、[ask]ページをお読みください。 偉大な質問は、コミュニティからより迅速で、より良い回答を提供する傾向があります。 – ochi

答えて

0

ゲートウェイを使用するサンプルtcp-client-serverを参照してください。これは、コントローラを含む任意のコードから呼び出すことができます。

+0

あなたの素早い答えをありがとうゲーリー。私はすでにその例のようなことをしましたが、コントローラから特定の接続されたクライアントにメッセージを送信するにはどうすればよいかわかりません(両方が直接接続されていないためです)。私はルーターとブリッジを試しましたが、これまでのところ動作しませんでした(あるいはおそらく私はそれらをセットアップする方法を知らなかった)。このIDを使用してメッセージを送信するために、IDで各接続を識別する方法はありますか?私はフィードバックを感謝します。 – Arc

+0

特定のクライアントをどのように特定するのか分かりませんが、接続時に 'ApplicationListener'を使用して' connectionId'を含むイベントを取得できます。特定のソケットにメッセージをルーティングするには、 'ip_connectionId'ヘッダをその値に設定する必要があります。ゲートウェイ上の '@ Header'アノテーションや他のいくつかのテクニックを使って、これを行うことができます。ヘッダーの定数は 'IpHeaders.CONNECION_ID'にあります。 TCPイベントについては、[the documentation](http://docs.spring.io/spring-integration/reference/html/ip.html#tcp-events)を参照してください。 –

+0

もう一度ゲイリー、あなたの注意のおかげで。私はこれで少し前進しました。今では、複数のクライアントに任意のメッセージを送信しようとしていますが、connectionIdsはすべて持っていますが、TcpOutGateには1つのip:portだけを受け取るconnectionFactoryが必要なため、どのようにメッセージを送信できますか?私はコネクションIDだけを持っていればどのようにメッセージをクライアントに送ることができますか? ありがとうございます。 – Arc