Как использовать OkHttp3, чтобы получить сгенерированный SessionId для соединения WebSocket? - PullRequest
1 голос
/ 02 марта 2020

Подскажите, как получить SessionId для подключения к веб-сокету. Есть ли способ, который мог бы вернуть его?
Когда мой клиент был на js, не было проблем с его получением (вы можете разобрать socket._transport.url).
Многие логи c привязаны к SessionId, который уже нельзя изменить.

Если вы используете Sock JS в браузере, вы можете увидеть этот транспортный URL, из которого вы можете впоследствии извлечь sessionId

wss://host/websocket/052/rs5ahsly/websocket

Но это Sock JS, в охттп наверное что-то еще

На сервере я могу получить sessionId таким образом, но как это сделать на клиенте?

@MessageMapping("/find")
public void find(SimpMessageHeaderAccessor sha, User user) {
    String sessionId = sha.getSessionId();
    LOG.debug("New session find - {}, {}", sessionId, user);
    // New session find - rs5ahsly, {user: Name, ...}
    Repository.add(sessionId, user);
}

Сервер: spring, stomp
Клиент: android, kotlin, клиент stomp, написанный поверх okhttp3 / WebSocket

...