HttpTunnelServer,从源码看Springboot如何实现双向数据交互
Tunnel是什么? Tunnel存在的意义,就是使用http协议来传输非http协议的内容,在使用fiddler4抓包的时候,常常会看见Tunnel这样的包,打开之后会发现里面没有标准http协议的模式,没有http头,包体也和http协议包体不相同。 Tunnel可以用来做服务器和客户端进行双向交流,这就解决了http1.1中无法实现服务器主动给客户端发送信息的问题。 Springboot中如何实现Tunnel? Springboot中提供了HttpTunnelServer来提供Tunnel这样的功能,我们可以先来看一看它的源码 public HttpTunnelServer(TargetServerConnection serverConnection) { Assert.notNull(serverConnection, "ServerConnection must not be null"); this.serverConnection = serverConnection; } 从构造方法中我们可以看出,传入了一个TargetServerConnection实例,而TargetServerConnection是一个函数式接口。 @FunctionalInterface public interface TargetServerConnection {