问题
最近在使用websocket 进行客户端服务端通信,当同一个session 多线程同时发送消息时,会导致 TEXT_FULL_WRITING 产生
解决
重试,睡眠随机时间,完美解决问题
private void send(Session session, String msg, String ip) {
log.info("send agent:{} msg {}", ip, msg);
try {
session.getAsyncRemote().sendText(msg);
} catch (Exception e) {
if (e instanceof IllegalStateException) {
try {
log.warn("session {} ip {} 达到最大发送量", session.getId(), ip);
TimeUnit.MILLISECONDS.sleep(ThreadLocalRandom.current().nextInt(5, 100));
send(session, msg, ip, bsId);
} catch (InterruptedException ignored) {}
}
}
}