2016-04-28 31 views
1

Я пытаюсь подключить существующее приложение Spring MVC с интеграцией Spring, но я не могу найти, как отправить TCP-сообщение конкретному клиенту.Интеграция Spring MVC с интеграцией с весной

У меня есть много устройств, подключенных к моему серверу через TCP, и я использую DirectChannel для их подключения.

Можно ли указать клиента, который получит сообщение при вызове SimpleGatewy.send()?

Спасибо.

+0

Добро пожаловать в StackOverflow. Пожалуйста, прочитайте нашу страницу [ask], чтобы узнать, как улучшить свой вопрос. Большой вопрос, как правило, обеспечивает более быстрые, лучшие ответы сообщества – ochi

ответ

0

См. Образец tcp-client-server, который использует шлюз - это может быть вызвано из любого кода, включая контроллер.

+0

Спасибо за ваш быстрый ответ Гэри. Я уже сделал что-то вроде этого примера, но не знаю, как я могу отправить сообщение от контроллера на конкретный подключенный клиент (поскольку оба они не связаны напрямую). Я пробовал маршрутизаторы и мосты, но не работал до сих пор (или, вероятно, я не знал, как их настроить). Есть ли способ идентифицировать каждое соединение по его идентификатору, чтобы отправить сообщение с использованием этого идентификатора? Я ценю любую обратную связь. – Arc

+0

Я не знаю, как вы идентифицируете конкретных клиентов, но когда они подключаются, вы можете использовать 'ApplicationListener' для получения события, которое содержит' connectionId'. Для маршрутизации сообщений в конкретный сокет вам нужно установить заголовок 'ip_connectionId' для этого значения. Вы можете сделать это с помощью аннотации '@ Header' на шлюзе или нескольких других методов. Константа для заголовка находится в 'IpHeaders.CONNECION_ID'. Информацию о событиях TCP см. В [документации] (http://docs.spring.io/spring-integration/reference/html/ip.html#tcp-events). –

+0

Привет, Гэри, спасибо за внимание. Я немного переехал с этим. Теперь я пытаюсь отправить произвольные сообщения нескольким клиентам, у меня есть все их идентификаторы соединения, но я не знаю, как отправить сообщение каждому из них, поскольку, например, TcpOutGate требует connectionFactory, который получает только один IP: порт. Как отправить сообщение клиенту, если у меня есть его connectionId? Спасибо. – Arc

Смежные вопросы