当前位置: 首页 > 知识库问答 >
问题:

使用Spring integration将请求从服务器发送到客户机

梁池暝
2023-03-14

我试图实现一个tcp客户端,它将使用spring Integration连接到现有的服务器。对于这项技术还是新手,我已经在https://github.com/spring-projects/spring-integration-samples上学习了spring示例。

<int-ip:tcp-connection-factory id="client"
                               type="client"
                               host="localhost"
                               port="12345"
                               single-use="false"
                               so-timeout="10000"
                               deserializer="javaSerializerDeserializer"
                               serializer="javaSerializerDeserializer" />
<bean id="javaSerializerDeserializer"
      class="org.springframework.integration.ip.tcp.serializer.ByteArrayLfSerializer" />

<int-ip:tcp-outbound-gateway id="outGateway"
                             request-channel="input"
                             reply-channel="clientBytes2StringChannel"
                             connection-factory="client"
                             request-timeout="10000"
                             reply-timeout="10000" />

<int:object-to-string-transformer id="clientBytes2String"
                                  input-channel="clientBytes2StringChannel" />

<int:service-activator input-channel="clientBytes2StringChannel" ref="thinclientService" />
<bean id="thinclientService" class="tcp.service.ThinClientService" />
@Component
public class ThinClientService {
    private static final Logger LOGGER = LoggerFactory.getLogger(ThinClientService.class);

    public String receive(String recv) {
        LOGGER.info("*****************Recv: {}", recv);
        return "echo";
    }
}

主要方法:

@SpringBootApplication
public class Application {
    public static void main(String args[]) throws Exception {
            GenericXmlApplicationContext context = new GenericXmlApplicationContext();
        context.load("classpath:META-INF/beans.xml");
        context.registerShutdownHook();
        context.refresh();

        System.out.println("Running test");

        SpringApplication.run(Application.class, args);
    }
}

如何强制此客户端连接到我的服务器,即使我不想发送数据?

共有1个答案

微生学
2023-03-14

我自己想办法弄明白了。我必须用client-mode=“true”将tcp-outbound-gateway更改为tcp-inbound-gateway。只有到那时,服务激活器才会接收从服务器发送的消息

更新bean配置:

<int-ip:tcp-connection-factory id="client"
                               type="client"
                               host="localhost"
                               port="12345" single-use="false" so-timeout="10000" deserializer="javaSerializerDeserializer"
                               serializer="javaSerializerDeserializer" />
<bean id="javaSerializerDeserializer"
      class="org.springframework.integration.ip.tcp.serializer.ByteArrayLfSerializer" />

<int-ip:tcp-inbound-gateway id="outGateway"
                            request-channel="input"
                            connection-factory="client"
                            client-mode="true"
                            retry-interval="1000"
                            scheduler="reconnectScheduler" />

<bean id="reconnectScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler" />

<int:object-to-string-transformer id="clientBytes2String"
                                  input-channel="input" output-channel="responseString" />

<int:service-activator input-channel="responseString" ref="thinclientService" />
<bean id="thinclientService" class="tcp.service.ThinClientService" />
 类似资料:
  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 问题内容: 我正在尝试从服务器向客户端发送文件,即服务器请求的客户端。客户端指定中的文件,然后将其发送到服务器,服务器将文件大小添加到文件中,然后将其返回给客户端。 客户端向其管道添加具有正确文件大小的新文件。 服务器使用上下文和所需文件创建一个新文件,并尝试发送该文件,但是从不读取该字节。 我在这里做错了什么? 记录 客户 FileRequestHandler.java FileChunkReq

  • 问题内容: 我正在尝试找到一种方法,将不同文件类型的文件从服务器发送到客户端。 我在服务器上有以下代码将文件放入字节数组: 然后,我将fileData作为字符串发送给客户端。这对于txt文件效果很好,但是当涉及到图像时,我发现尽管它可以很好地创建包含数据的文件,但图像无法打开。 我不确定我是否正在按照正确的方式进行操作。谢谢您的帮助。 问题答案: 如果要读取/写入二进制数据,则应使用字节流(Inp

  • 我被夹在中间。我想实现一个POST方法,使用HttpUrlConnection向服务器发送注册用户的电子邮件、名称和密码。以下是我的代码: 我不知道我在哪里犯了错误。我收到以下回复 空格后的“0”是超文本传输协议响应代码返回的响应代码。当我在浏览器中尝试时,我的网址是正确的。我不知道我在哪里犯了错误;是我的服务器故障还是我的代码有错误,因为我不认为我的代码有任何交互处理。 我是Android开发的

  • 问题内容: 我正在尝试通过一个请求将数据从一个node.js服务器发送到另一个node.js服务器。我在“客户端” node.js中执行的操作如下: 该块或多或少是从node.js网站获取的,因此应该正确。我唯一看不到的是如何在变量中包括用户名和密码以进行实际登录。这是我处理服务器node.js中的数据的方式(我使用express): 如何将这些和字段添加到变量中以使其登录? 谢谢 问题答案: 发

  • 问题内容: 由于我是Web服务的新手,请您告诉我问题的答案。我的问题是 我想实现一个Web服务,当客户端调用此Web服务时,该服务会向客户端发送pdf文件。 请有人帮我提供一段不错的代码或解释。 现在可以请一个人解决我的错误。 12-23 09:42:48.429:调试/安装(32):DexInv:-开始’/data/app/vmdl33143.tmp’— 12-23 09:42:51.708:调