WebSocket之坑(小白之说)

相信大家在工作中都会遇到服务端想推送数据到客户端这种情况发生。这时候,就会想到webSocket的存在。

在java中,使用webSocket,则就是前端采用了webSocket对象,或者是采用了SocketJs对象进行处理。后端则建立对应的webSocket路径,以及对应的handler。

在挑选使用的方法中,这里我是采用了Spingboot+WebSocket

创建好之后,与前端进行联调的过程中发生了许多的小插曲。首先在自测的阶段,本地跑起项目,访问的url中使用localhost来代替IP地址(域名)。这个时候发现是没有任何问题的。同时也能够保持长连接的效果。

在本地与前端联调也是可以的,但是!!!在上测试环境则出现了问题。前端:怎么连接一会就断掉连接了,你们后端代码有问题看下。而我看了看后端的日志,看见出错也是认为代码的问题

大致里面看出是由于连接超时,然后导致在网络传输这块出现的问题(NIO相关问题)。然后我测试测试环境上的后端连接问题。发现只能在测试环境下面连接1min,然后就自动中断。后端就开始出现上图的问题(头大ing。。)

然后开始考虑问题所在。代码应该是没有问题的,我们测试环境下面Http进行的最大连接时间是20s(都能连接一分钟了?怎么代码可能有问题)然后再进行查找问题。


经过不断的测试,发现有一种方法可以进行测试环境下面的可行性。那就是将测试环境的域名换成公网Ip+端口,可以很长时间的保持长连接(具体时间没有测量过)。而换成域名方式代替Ip+端口则就会出现一分钟中断的情况。

这时候问题已经很明显了!!!

现在也就是用反向代理出现了问题,网上的说法都是基于Nginx,Nginx解决方法。这里暂且不讨论。

我这边是HAProxy配置方法方法参考。于是与运维小哥哥做了测试环境下面的一个测试。

结果如图

测试环境下面我们设置了十分钟,十分钟之后就中断连接。证实了我们的出发点是正确的,在域名映射的环节出现问题

下面是针对于简单的HAProxy的配置

defaults
  timeout tunnel 1h
  timeout client-fin 30s
复制代码

到这里,我这次采坑之旅也算是结束了。

其他相关讲解文章

haProxy配置

转载于:https://juejin.im/post/5bb06407e51d450e98750fac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值