Я изо всех сил пытаюсь узнать сеанс при получении события onWebSocketClose. Официальные документы: https://www.eclipse.org/jetty/javadoc/current/org/eclipse/jetty/websocket/api/WebSocketAdapter.html#onWebSocketClose (int, java .lang.String)
В нем говорится, что есть два параметра: onWebSocketClose(int statusCode, java.lang.String reason)
Другой сайт говорит, что есть 3 параметра: https://www.eclipse.org/jetty/documentation/current/jetty-websocket-api-annotations.html
@OnWebSocketClose
An optional method level annotation.
Flags one method in the class as receiving the On Close event.
Method signature must be public, not abstract, and return void.
The method parameters:
Session (optional)
int closeCode (required)
String closeReason (required)
В настоящее время в WebSocketOpen я добавляю сеанс в коллекцию следующим образом:
private static Set<Session> connections = Collections.synchronizedSet(new HashSet<Session>());
private static final Logger logger = LogManager.getLogger(WebSocketEvent.class);
@Override
public void onWebSocketConnect(Session session)
{
super.onWebSocketConnect(session);
connections.add(session);
logger.debug("Socket Connected: " + session);
}
И на WebSocketClose я хочу чтобы снова удалить этот сеанс, например:
@Override
public void onWebSocketClose(Session session, int statusCode, String reason)
{
super.onWebSocketClose(session,statusCode,reason);
logger.debug("Connection closed. IP: " + session.getRemoteAddress().getAddress().toString()+ "; rc: "+statusCode+ "; reason: "+ reason);
connections.remove(session);
logger.debug("Session with following IP removed from list: " + session.getRemoteAddress().getAddress().toString());
}
Но кажется, что необязательный параметр сеанса недоступен, как описано в официальных документах, поэтому он отмечает его как ошибку.
Любая идея, как решить это? Заранее спасибо!