все.
Я хочу сделать чат-сервер с помощью RSocket.
Приведенный ниже код сохраняет информацию о пользователе, когда пользователь получает к ней доступ.
private final List<RSocketRequester> CLIENTS = new ArrayList<>();
@ConnectMapping
public void onConnect(RSocketRequester reqer) {
log.info("RSocket Connect Mapping Start : reqer {}", reqer.hashCode());
reqer.rsocket()
.onClose()
.doFirst(() -> CLIENTS.add(reqer))
.doOnError(error -> log.info("RSocket Connect Error : error {}", error))
.doFinally(consumer -> {
CLIENTS.remove(reqer);
})
.subscribe();
log.info("RSocket Connect Mapping End : Clients {}", this.CLIENTS.size());
}
spring:
rsocket:
server:
port: 6565
transport: websocket
mapping-path: /rs
Я хочу получать информацию о пользователе, когда пользователь отключается.
Может ли RSocket определить, когда пользователь отключается?
Помоги мне, пожалуйста.




Если вы настроили безопасность rsocket, вы можете получить доступ к AuthenticationPrincipal в onConnect().
Простой пример
@ConnectMapping
public void onConnect(RSocketRequester requester, @AuthenticationPrincipal Jwt principal) {
requester.rsocket()
.onClose()
.doFirst(() -> {
System.out.println(principal.getSubject());
System.out.println("-----------------CONNNEEEECTED-----------------");
})
.doOnError(error -> {
})
.doFinally(consumer -> {
System.out.println(principal.getSubject());
System.out.println("-----------------DISCONNNNNECTED-----------------");
})
.subscribe();
}