我有以下用例:
我使用以下代码使用Spring Boot(在tomcat上部署)为单个套接字实现了它:
try (ServerSocket serverSocket = new ServerSocket(6666)) {
if (serverSocket.isBound()) {
Socket client = serverSocket.accept();
doSomething(client.getInputStream());
}
}
现在我希望能够以干净的方式处理多个客户端连接。我以为我可以使用Spring Integration的TCP连接工厂来完成那项工作,但我认为我完全错过了消息传递部分,因为在我的用例中我不发送任何消息但是普通的流不能正常工作,对吧?通过这种设置,我收到了来自客户端的数百条消息,而不是一条消息:
@Bean
public AbstractServerConnectionFactory serverCF() {
TcpNetServerConnectionFactory connFactory = new TcpNetServerConnectionFactory(port);
connFactory.setDeserializer(new SpeechSocketDeserializer());
connFactory.setSingleUse(true);
return connFactory;
}
@Bean
public TcpInboundGateway tcpInGate(AbstractServerConnectionFactory connectionFactory) {
TcpInboundGateway inGate = new TcpInboundGateway();
inGate.setConnectionFactory(connectionFactory);
inGate.setRequestChannel(fromTcp());
return inGate;
}
@Bean
public MessageChannel fromTcp() {
return new DirectChannel();
}
请问您可以建议在服务器端实现多套接字连接处理的最佳方法是什么?我可以使用一些Spring功能/框架吗?