powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить клиента от websocket? Spring + websocket + sockjs
25 сообщений из 90, страница 1 из 4
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776498
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой ChannelInterceptor , с методом preSend :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {

    LOGGER.info("WEBSOCKETCHANNELINTERCEPTOR -> "+message.toString());

    StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);

    if (accessor != null && StompCommand.CONNECT.equals(accessor.getCommand())) {
        List<String> headers = accessor.getNativeHeader(AUTHORIZATION);
        accessor.setUser(websocketAuthenticationManager.authenticate(new JWTTokenAuthentication(tokenUtils.resolveToken(headers != null ? headers.get(0) : null))));

    }

    return message;
}



В случае любой ошибки при CONNECT -е я хочу отключить пользователя от вебсокета. как это сделать?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776521
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЕсть такой ChannelInterceptor , с методом preSend :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {

    LOGGER.info("WEBSOCKETCHANNELINTERCEPTOR -> "+message.toString());

    StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);

    if (accessor != null && StompCommand.CONNECT.equals(accessor.getCommand())) {
        List<String> headers = accessor.getNativeHeader(AUTHORIZATION);
        accessor.setUser(websocketAuthenticationManager.authenticate(new JWTTokenAuthentication(tokenUtils.resolveToken(headers != null ? headers.get(0) : null))));

    }

    return message;
}



В случае любой ошибки при CONNECT -е я хочу отключить пользователя от вебсокета. как это сделать?

В интерфейс загляни там должно быть, что нибудь на вроде метода onError
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776640
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka, какой интерфейс?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776695
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Сейчас при ошибке что происходит? Райзе проглатывается и все работает?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776722
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, Сейчас, и по дефолту так, когда возникает ошибка сервак шлет клиенту сообщение ERROR, но соединение не рвет.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776754
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopPetro123, Сейчас, и по дефолту так, когда возникает ошибка сервак шлет клиенту сообщение ERROR, но соединение не рвет.значит уровень ошибки не катастрофа. Нет нужды рвать. Дальше что сломалось?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776761
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мое имхо, что перехватчики не могут рвать канал. Это не их компетенция. Они просто..... Подслушать и подправить.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776762
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123значит уровень ошибки не катастрофа. Нет нужды рвать. Дальше что сломалось?
А мне нужно разорвать соединение ибо если CONNECT адекватно не прошел то и юзера нет. А он мне нужен.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776765
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
А разорвав откуда юзверь появится? Это поможет?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776767
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Ну и решать, нужен юзверь или нет, это же БЛ и вполне возможно клиента дело.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776771
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и если разорвать канал, клиент вообще ничего не узнает о проблеме. Логично?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39776935
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopSergunka, какой интерфейс?

Class ChannelInterceptor extends Interface

Обычное дело делаешь метод оверид на onError и в этом методе вызываешь слоз коннектион это базовый дизайн для любого ООП.

Если бы дал гитхаб или хотябы опубликовал заоголовок класса то можно было бы даже помочь. Но извини не у всех такая мощная чуйка, что там у тебя в коде написано.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777012
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka, тут такого нет. Это спринг поверх websocket-api.

Код выложить не могу, ибо подписал договор о неразглашении.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777013
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Tsyklop,
А разорвав откуда юзверь появится? Это поможет?
А не надо что бы он появился. Надо разорвать и все.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777015
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Ну и если разорвать канал, клиент вообще ничего не узнает о проблеме. Логично?
Нет. ему придет ошибка. Перед отключением придет ошибка.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777036
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая решается в топике проблема?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777043
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopSergunka, тут такого нет. Это спринг поверх websocket-api.

Код выложить не могу, ибо подписал договор о неразглашении.

https://github.com/SVyatkin/dragonfly-demo/blob/master/src/main/java/com/vyatkin/dragonfly/service/WebSocketServerEndPoint.java

Попробуй через аннотации @OnError и @OnClose примерно так должно выглядеть... вообще проблема не нова должен легко найти на https://stackoverflow.com


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
	/**
	 * @param session
	 *            - session object
	 * @param closeReason
	 *            - The reason of close of session
	 */
	@OnClose
	public void onClose(Session session, CloseReason closeReason) {
		logger.info("Server: Session " + session.getId() + " closed because of " + closeReason.toString()); 
		
    	// Remove session from the connected sessions set
    	pullConnections.remove(session);
	}

	/**
	 * @param session
	 *            - current session object
	 * @param t
	 *            - Throwable instance containing error info
	 */
	@OnError
	public void onError(Session session, Throwable t) {
		logger.error("Server: Session " + session.getId() + " error " + t.getMessage());
		
    	// Remove session from the connected sessions set
    	pullConnections.remove(session);
	}
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777145
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka, я еще раз говорю - я использую вебсокеты в спринге (не чисто либу для сокетов). У спринга своя штука над websocket-api и я не сделаю того что предлагаете Вы.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777146
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonА какая решается в топике проблема?
как отрубить клиента от сокета со стороны сервака
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777151
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopmaytonА какая решается в топике проблема?
как отрубить клиента от сокета со стороны сервака
Это не проблема. Это ваше сиюминутное хотение.

Какая была настоящая бизнесовая проблема?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777154
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто ваше сиюминутное хотениехорошо сказал). Ни одного слова лишнего)
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777171
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно. Закрыто
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777180
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Еще есть старое старое правило - закрывают ресурс там где его открывают.
Я конечно, бывает его нарушаю, но правило существует) имхо.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЯсно. Закрыто
Есть такой нудный документ. Называется "The WebSocket Protocol".
Почитай на досуге тут https://tools.ietf.org/html/rfc6455

Там должны быть ответы на основные вопросы. Подозреваю что не все браузеры точно его соблюдают.
Но убежден что проблема (если она существует) давно известна. Запротоколирована и на нее есть решение.
Возможно в части конфигураций.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777228
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonTsyklopЯсно. Закрыто
Есть такой нудный документ. Называется "The WebSocket Protocol".
Почитай на досуге тут https://tools.ietf.org/html/rfc6455

Там должны быть ответы на основные вопросы. Подозреваю что не все браузеры точно его соблюдают.
Но убежден что проблема (если она существует) давно известна. Запротоколирована и на нее есть решение.
Возможно в части конфигураций.
при закрытии/переходе на другую страницу бракзеры закрывают ws, но надкушенный фрукт этого не делает.....
...
Рейтинг: 0 / 0
25 сообщений из 90, страница 1 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить клиента от websocket? Spring + websocket + sockjs
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]