gpt4 book ai didi

java - 使用 Spring 集成 tcpserver 来管理客户端并向它们发送消息

转载 作者:行者123 更新时间:2023-12-02 04:36:12 24 4
gpt4 key购买 nike

我已经创建了一个带有 spring 集成的简单 tcp 服务器,它可以保持连接处于 Activity 状态并在连接期间响应每个请求。

在该 requestMethod 中,我还可以读取 MessageHeder 来获取 connectionId。

现在我想从服务器向客户端发送消息。

据我了解的文档,我需要将 connectionid 放入 MessageHeader 中,然后发送消息。但我不知道如何做后一项。我已准备好消息,但如何发送/推送它?

这是我的 xml 配置:

<bean id="lfSerializer" class="org.springframework.integration.ip.tcp.serializer.ByteArrayLfSerializer"/>

<int-ip:tcp-connection-factory
id="socketserver"
type="server"
port="30124"
using-nio="true"
deserializer="lfSerializer"
serializer="lfSerializer"
single-use="false"/>

<int-ip:tcp-inbound-channel-adapter id="inboundServer"
channel="inputChannel"
connection-factory="socketserver"/>

<int-ip:tcp-outbound-channel-adapter id="outboundServer"
channel="outputChannel"
connection-factory="socketserver"
/>

<int:channel id="inputChannel">
<int:interceptors>
<int:wire-tap channel="logger"/>
</int:interceptors>
</int:channel>

<int:channel id="outputChannel">
<int:interceptors>
<int:wire-tap channel="logger"/>
</int:interceptors>
</int:channel>

<int:logging-channel-adapter id="logger" level="DEBUG" log-full-message="true"/>

<int:service-activator input-channel="inputChannel"
output-channel="outputChannel"
ref="echoService"
method="test"/>

<bean id="echoService"
class="com.examples.EchoService" />

我还尝试创建一个 bean 和另一个用于输出的 serviceactivator,然后自动连接该 bean 并将其称为“发送”方法,但我不知道在该发送方法中要实现什么来发送消息。

最佳答案

如果这是一个简单的请求/响应场景,请使用入站网关而不是 channel 适配器,框架将为您处理相关性。这用于 the sample app 。只需让您的 POJO 方法返回回复负载即可。

如果您想向客户端发送任意消息(即不是请求/回复,而是输入、输出、输出、输入、输出、输出、输出等),那么,是的,您需要自己构建消息,插入ip_connectionId header 。

要发送它们,有多种选择:

注入(inject)outputChannel进入你的代码

@Autowired
private MessageChannel outputChannel;

使用 MessagingTemplate发送到 channel (或者直接调用其 send(Message<?> message) 方法)。

或者

使用 MessagingGateway使用 void 返回方法并将网关注入(inject)到您的代码中。

编辑:

请注意,如果您想在接收任何内容之前开始发送消息,您可以通过connection opened event获取连接ID .

关于java - 使用 Spring 集成 tcpserver 来管理客户端并向它们发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30713194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com