websocket通信问题排查思路
一、websocket连接成功,但数据完全推不过来。
通过抓包发现,是回包时间太长超过了1分钟导致的。这种通常是推送数据的线程有问题导致的。
正常抓包的情况如下:
二、大量数据可以正常推送成功,不定时websocket报错java.net.SocketException: Broken pipe (Write failed) ,重连也显示java.net.SocketException: Broken pipe (Write failed)
这是一种常见的网络错误
,通常是网络中断或不稳定导致的,同时服务端重启也会导致这类问题。
在代码中加入Broken pipe的异常捕获,捕获后执行重连操作。同时考虑在代码中实现适当的重试机制,以应对临时性的连接问题。
try {// 尝试发送数据的代码webSocket.send(message);
} catch (SocketException e) {if ("Broken pipe".equals(e.getMessage())) {// 这里实现重连逻辑tryReconnect();} else {// 处理其他SocketException}
}