相信大家在工作中都会遇到服务端想推送数据到客户端这种情况发生。这时候,就会想到webSocket的存在。
在java中,使用webSocket,则就是前端采用了webSocket对象,或者是采用了SocketJs对象进行处理。后端则建立对应的webSocket路径,以及对应的handler。
在挑选使用的方法中,这里我是采用了Spingboot+WebSocket。
创建好之后,与前端进行联调的过程中发生了许多的小插曲。首先在自测的阶段,本地跑起项目,访问的url中使用localhost来代替IP地址(域名)。这个时候发现是没有任何问题的。同时也能够保持长连接的效果。
然后开始考虑问题所在。代码应该是没有问题的,我们测试环境下面Http进行的最大连接时间是20s(都能连接一分钟了?怎么代码可能有问题)然后再进行查找问题。
经过不断的测试,发现有一种方法可以进行测试环境下面的可行性。那就是将测试环境的域名换成公网Ip+端口,可以很长时间的保持长连接(具体时间没有测量过)。而换成域名方式代替Ip+端口则就会出现一分钟中断的情况。
这时候问题已经很明显了!!!
现在也就是用反向代理出现了问题,网上的说法都是基于Nginx,Nginx解决方法。这里暂且不讨论。
我这边是HAProxy配置方法方法参考。于是与运维小哥哥做了测试环境下面的一个测试。
结果如图
测试环境下面我们设置了十分钟,十分钟之后就中断连接。证实了我们的出发点是正确的,在域名映射的环节出现问题
下面是针对于简单的HAProxy的配置
defaults
timeout tunnel 1h
timeout client-fin 30s
复制代码
到这里,我这次采坑之旅也算是结束了。
其他相关讲解文章