Pass disconnection reason (if known) to clients
This commit is contained in:
parent
1ba00a66eb
commit
6754ec5e10
|
@ -33,6 +33,7 @@ import java.util.concurrent.atomic.AtomicLong;
|
|||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.concurrent.atomic.LongAdder;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import io.micrometer.core.instrument.Tags;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -383,10 +384,25 @@ public class WebSocketConnection implements MessageAvailabilityListener, Displac
|
|||
|
||||
@Override
|
||||
public void handleDisplacement(final boolean connectedElsewhere) {
|
||||
Metrics.counter(DISPLACEMENT_COUNTER_NAME, List.of(UserAgentTagUtil.getPlatformTag(client.getUserAgent()))).increment();
|
||||
final Tags tags = Tags.of(
|
||||
UserAgentTagUtil.getPlatformTag(client.getUserAgent()),
|
||||
Tag.of("connectedElsewhere", String.valueOf(connectedElsewhere)));
|
||||
|
||||
Metrics.counter(DISPLACEMENT_COUNTER_NAME, tags);
|
||||
|
||||
final int code;
|
||||
final String message;
|
||||
|
||||
if (connectedElsewhere) {
|
||||
code = 4409;
|
||||
message = "Connected elsewhere";
|
||||
} else {
|
||||
code = 1000;
|
||||
message = "OK";
|
||||
}
|
||||
|
||||
try {
|
||||
client.close(1000, "OK");
|
||||
client.close(code, message);
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Orderly close failed", e);
|
||||
|
||||
|
|
Loading…
Reference in New Issue