powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить клиента от websocket? Spring + websocket + sockjs
90 сообщений из 90, показаны все 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
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777558
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopSergunka, я еще раз говорю - я использую вебсокеты в спринге (не чисто либу для сокетов). У спринга своя штука над websocket-api и я не сделаю того что предлагаете Вы.

Вы бы не тупили сильно, а сказали какую библиотеку используете

Я Вам дал ссылку на код где используются те же спринговские библиотеки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
		<!-- websocket -->

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-websocket</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-websocket</artifactId>
		</dependency>
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777660
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka
Вы бы не тупили сильно, а сказали какую библиотеку используете

Я Вам дал ссылку на код где используются те же спринговские библиотеки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
		<!-- websocket -->

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-websocket</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-websocket</artifactId>
		</dependency>



Вы походу не знаете спринг и не работали с ним. Но либу я использую от спринга. То что спринг использует у себя websocket-api я писал. кто читать не умеет? И то что спринг делает свою обертку на ws-api тоже писал. И то что если я буду использовать голое ws-api не даст мне возможности использовать спринг в нем, и фичи которые дает спринг вместе с ws-api. что тут не понятного?

странно.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777683
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopНо либу я использую от спринга.

Все что тебя спросили какую библиотеку?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777701
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777703
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять эти гениальные вопросы и написание программ по стаковерфлоу.

Ищи как получить websocketsession и с ним уже работай. Каким образом иначе ты хочешь "разорвать" коннект ?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777779
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверинопять эти гениальные вопросы и написание программ по стаковерфлоу.
а что не так? кто Вам сказал что я пишу программы по so? забавные выводы, учитывая что Вы меня не знаете.

ОзверинИщи как получить websocketsession и с ним уже работай. Каким образом иначе ты хочешь "разорвать" коннект ?

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


Вот:

Код: xml
1.
2.
3.
4.
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>



Если не бут то:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-websocket</artifactId>
</dependency>
 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-messaging</artifactId>
</dependency>
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777823
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop, ты смотрел дерево зависимостей?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777830
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonTsyklop, ты смотрел дерево зависимостей?
да. ептить. я ЕЩЕ РАЗ ГВООРЮ. я работаю с сокетами через спринг. Если я буду работать с чистым websocket-api я не смогу юзать фичи спринга. что тут не понятного? то что Вы предлагаете я знаю и раньше так делал. Но не в этой ситуации.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777832
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(поднимая руки)

Хорошо-хорошо работай через спринг. Я просто поинтересовался импементацией.

Нервные какие все..
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777865
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, та не нервные. Просто я это уже писал несколько раз. вот и все)
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39777871
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начать можно тут:
https://github.com/spring-projects/spring-session/issues/35

но, похоже, что если не разбираться(оно тебе надо разбираться? нужен же сразу ответ), то, похоже, что здесь все есть:
https://github.com/spring-projects/spring-framework/issues/16919
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778112
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopSergunkaВсе что тебя спросили какую библиотеку?


Вот:

Код: xml
1.
2.
3.
4.
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>



Если не бут то:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-websocket</artifactId>
</dependency>
 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-messaging</artifactId>
</dependency>



Хорошо, Спасибо.

Приведи код как ты сейчас закрываешь MessageChannel channel? И вообще ты его закрываешь или клиент просто сам отваливается?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778165
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunkaили клиент просто сам отваливается?
именно это.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka,
Отвалился клиент, это наверное народное название.
А в переводе вероятно, изменился статус канала и он закрылся?
Тогда что хочет автор с нервами две страницы?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778207
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или отвалился значит что статус не изменился и мы не подозревая при след.отправке получим райзе?
Выше автор утверждал что ничего не происходит и клиент получает ошибку.
Где код?
...
Аффтар, ты надоел и давай код не там где хотелка а там где сломалось, ОТВАЛИЛОСЬ и не работает.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778224
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Или отвалился значит что статус не изменился и мы не подозревая при след.отправке получим райзе?
Выше автор утверждал что ничего не происходит и клиент получает ошибку.
Где код?
...
Аффтар, ты надоел и давай код не там где хотелка а там где сломалось, ОТВАЛИЛОСЬ и не работает.

я привел код где происходит ошибка. что еще дать? Происходит ошибка, клиенту шлется сообщение об ошибке в формате STOMP и все. Дальше ничего. соединение не разрывается. Висит.

Если бы я знал где можно офнуть юзера, я бы это сделал и не писал бы сюда. логично?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778229
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Тяжелый случай.
Если "висит" то где код где висит.
Если "отвалилось" то где код со строчкой комментария про отвалилось.
Если клиент не может отправить на сервер, то где код с этой строчкой?
Если райзе, то где стек ошибки?
Если у нас чат, то код приводить как сервера так и клиента.
..
Болтать прекратишь?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778297
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно что автора беспокоит. Если сервер на прикладном уровне закрыл клиента - то значит проблем нет. Сервер
с ним уже не будет работать. Если висит физический сокет - ну бох сним пускай висит. Ведь там еще и помимо веб-сокета
еще и слой TCP/IP или автор хочет как в хакерских фильмах его так "оффнуть" чтоб несчатсный поциент выпал
из комфортного кресла или у него лопнули очки виртуальной реальности или у него там дым из системного блока
пошел. Вобщем непонятно какой ожидается полезные эффект.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778331
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopPetro123Или отвалился значит что статус не изменился и мы не подозревая при след.отправке получим райзе?
Выше автор утверждал что ничего не происходит и клиент получает ошибку.
Где код?
...
Аффтар, ты надоел и давай код не там где хотелка а там где сломалось, ОТВАЛИЛОСЬ и не работает.

я привел код где происходит ошибка. что еще дать? Происходит ошибка, клиенту шлется сообщение об ошибке в формате STOMP и все. Дальше ничего. соединение не разрывается. Висит.

Если бы я знал где можно офнуть юзера, я бы это сделал и не писал бы сюда. логично?

Вы можете только закрыть канал. В моем примере в котором я привел я просто закрываю сессию со стороны вебсокет сервера

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@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);
	}




Обычно если происходит ошибка, то просто закрываешь канал и клиент пытается создать у тебя на сервере новую сессию.

Тут надо понимать, что контракт между сервером и клиентом устанавливается через IP:Port + IP:port так что закрытие такого контракта не приведет к сайд эфекту что ты походу закроешь еще чью то сессию.

Я вебсокет не трогал уже больше двух лет, но вижу много библиотек написали. Вот занятный пример где клиент отключается от соединения

https://spring.io/guides/gs/messaging-stomp-websocket/

Код: javascript
1.
2.
3.
4.
5.
6.
7.
function disconnect() {
    if (stompClient !== null) {
        stompClient.disconnect();
    }
    setConnected(false);
    console.log("Disconnected");
}



Там STOMP библиотечка какая то хитрая уже нарисовалась т.е. на стороне сервера там должна быть приблуда которая закроет канал или сессию в зависимости от API.

Без кода тут народ вряд ли поможет так как API сильно разнится даже на уровне версии библиотеки.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778342
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такие сложности , зачем?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778446
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадятакие сложности , зачем?он ошибки не может внятно показать, а ты про архитектуру спрашиваешь.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778447
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нам ошибку пока не показали.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778511
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123он ошибки не может внятно показать, а ты про архитектуру спрашиваешь.тут дело не только в ошибке. как мне кажется , ТС не совсем понимает ws.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778521
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибка проверки JWT токена. Вам это что-то даст?

Дело не конкретно в ошибке, а в том, как отключить юзера при возникновении ошибки.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778522
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадятут дело не только в ошибке. как мне кажется , ТС не совсем понимает ws.

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

Если в чистом websocket-api это можно сделать и я даже знаю как, то тут это хз.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778525
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема закрыта. Нет в этом надобности более.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778570
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopТема закрыта. Нет в этом надобности более.
Уволился/уволили? ))
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778603
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopОшибка парсинга JWT токена. Это что-то даст? При чем тут вообще ошибка? мне не важно какая ошибка возникает. Мне важно как отрубить юзера от сокета.опять вместо кода на форуме программистов словоблудие и указы что кому нужно и не нужно.
Пришел с вопросом и учит жизни третью страницу вместо демки кода с вопросом.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778679
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NixicУволился/уволили? ))
нет. забил на это.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778681
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123опять вместо кода на форуме программистов словоблудие и указы что кому нужно и не нужно.
Пришел с вопросом и учит жизни третью страницу вместо демки кода с вопросом.
Код чего нужен? не понимаю.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778683
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123опять вместо кода на форуме программистов словоблудие и указы что кому нужно и не нужно.
Пришел с вопросом и учит жизни третью страницу вместо демки кода с вопросом.
я никого ничему не учу. ХЗ откуда вы это взяли. Я написал что нужно, а не учил кого либо.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778691
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopКод чего нужен? не понимаю.8 человек просили подробностей в коде, а он не понимает.
Перечитай свой топик.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778693
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЯ написал что нужнотут публичный форум. 50‰ спрашиваешь и 50‰ оставляешь соль и спички чтобы другие поняли и учились на твоих ошибках).
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778694
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro1238 человек просили подробностей в коде, а он не понимает. Перечитай свой топик.
Нет, не понимаю, о каком коде идет речь. Тм где был момент и так есть в шапке. О каком тогда конкретно идет речь?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778695
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://spring.io/guides/gs/messaging-stomp-websocket/ ВОт гайд по которому я делал. Тут и код есть. Подключение на фронте идентичное как у меня.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778701
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Ты сказал висит, значит код где висит. И т.д.

21817787
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778711
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopи по дефолту так, когда возникает ошибка сервак шлет клиенту сообщение ERROR, но соединение не рвет.что за ошибка? код?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778728
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать нечего друзья. Циклоп хочет чтоб мы репродьюсили неизвестный дефект в шаблоне spring-stomp-websocket.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778743
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадячто за ошибка? код?

Как я уже писал Выше проверка JWT вылетел эксепшн. К примеру ExpiredJwtException. На фронт отправилось сообщение об ошибке в формате:

авторERROR
receipt-id:message-12345
content-type:text/plain
content-length:171
message: malformed frame received

Ответил на Ваш вопрос?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778745
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДелать нечего друзья. Циклоп хочет чтоб мы репродьюсили неизвестный дефект в шаблоне spring-stomp-websocket.
Кхм. я не хочу вообще что бы что-то повторяли. Вопрос был не об этом вообще. На счет ошибки было сказано как условие при котором я хочу сделать дисконект. А умные люди зачем-то приплели сюда ошибку конкретную. Один вопрос - зачем?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778748
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Ты сказал висит, значит код где висит. И т.д.
Не код висит, а соединение. -_-

авторДальше ничего. соединение не разрывается. Висит.

Где тут было упоминание про код?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778761
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopPetro123Ты сказал висит, значит код где висит. И т.д.
Не код висит, а соединение. -_-

авторДальше ничего. соединение не разрывается. Висит.

Где тут было упоминание про код?
Вот это читал?
Petro123И т.д.

21817787
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778770
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopНа счет ошибки было сказано как условие при котором я хочу сделать дисконект. А умные люди зачем-то приплели сюда ошибку конкретную. Один вопрос - зачем?главное условие топика - Ошибка. Но ошибку почему то приплели)))
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778777
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я согласен с тем что топик пора закрывать. Нет бага - нет проблемы. Нет стектрейса - нет проблемы. Нет жалоб конечных пользователей - тоже нет проблемы. Performance issue тоже не был идентифицирован.

Как-то вот в таком вот аспекте.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778792
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. HttpSessionHandshakeInterceptor - копирует(по умолчанию) аттрибуты httpsession в атрибуты websession.
2.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778795
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
+1
Трудно обсуждать термин "соединение висит" это хорошо или плохо в принципе)
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778812
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин1. HttpSessionHandshakeInterceptor - копирует(по умолчанию) аттрибуты httpsession в атрибуты websession.
2.

ааа..

собственно в конфиг методе можно сделать так..и дальше мне лень описывать .т.к. все это есть по ссылке, которую я кидал


Код: 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.
@Override
        public void configureWebSocketTransport(final WebSocketTransportRegistration registration) {
            registration.addDecoratorFactory(new WebSocketHandlerDecoratorFactory() {
                @Override
                public WebSocketHandler decorate(final WebSocketHandler handler) {
                    WebSocketHandlerDecorator w = new WebSocketHandlerDecorator(handler) {


                        @Override
                        public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
                            session.close(CloseStatus.NOT_ACCEPTABLE);
                            super.handleMessage(session, message);
                        }

                        @Override
                        public void afterConnectionEstablished(final WebSocketSession session) throws Exception {
                            super.afterConnectionEstablished(session);
                        }
                    };



                    return w;
                }
            });
        }
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778816
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopКак я уже писал Выше проверка JWT вылетел эксепшн. К примеру ExpiredJwtException. На фронт отправилось сообщение об ошибке в формате:

авторERROR
receipt-id:message-12345
content-type:text/plain
content-length:171
message: malformed frame received

Ответил на Ваш вопрос?а что в эксепшн? в каком месте он?
и почему ошибка шлётся на фронт? для упрощения взлома?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778848
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяа что в эксепшн? в каком месте он?
первый пост темы

вадяи почему ошибка шлётся на фронт? для упрощения взлома?
ибо так сделали разрабы spring.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778849
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин, Хм. спасибо. полезли мысли по поводу реализации. Спасибо огромное!
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778851
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123главное условие топика - Ошибка. Но ошибку почему то приплели)))

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

Кхм. где я тут заостряю внимание на ошибке? где сказано об конкретной ошибке? хде?

Тут сказано авторВ случае любой ошибки. это что значит какой-то одной, что вы к ней придолбались? или что? при чем тут вообще конкретная ошибка.

Вопрос был авторя хочу отключить пользователя от вебсокета. как это сделать?. при чем тут ошибка? вообще не пойму.
В данном случае ошибка это как триггер к отключению. А какая она абсолютно все равно.

господи.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778853
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonА я согласен с тем что топик пора закрывать. Нет бага - нет проблемы. Нет стектрейса - нет проблемы. Нет жалоб конечных пользователей - тоже нет проблемы. Performance issue тоже не был идентифицирован.

Как-то вот в таком вот аспекте.

Видать Вы и Petro123 читаю не все сообщения. Сколько я раз писал уже что тема закрыта? Но, нет. Надо и дальше чет писать. Гениально.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778856
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopmaytonА я согласен с тем что топик пора закрывать. Нет бага - нет проблемы. Нет стектрейса - нет проблемы. Нет жалоб конечных пользователей - тоже нет проблемы. Performance issue тоже не был идентифицирован.

Как-то вот в таком вот аспекте.

Видать Вы и Petro123 читаю не все сообщения. Сколько я раз писал уже что тема закрыта? Но, нет. Надо и дальше чет писать. Гениально.
Пока модератор не закрыл - тема считается открытой. Для сообщества.
Впрочем вы можете ее не читать. Она - суть общественное достояние.

Таков он суровый интернет.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778869
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopпри чем тут ошибка? вообще не пойму.притом что задающий вопрос ТС засовывает своё г. характер и мнение далеко далеко.
И дает максимально полную и даже излишнюю информацию.

Tsyklopвообще не пойму.
Ты вопрос задал, поэтому тебя не просят понимать а исполнять что говорят.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778890
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Ты вопрос задал, поэтому тебя не просят понимать а исполнять что говорят.
Так вот да. я задал конкретный вопрос. а не "как мне при возникновении такой-то ошибки, отключать юзера". ведь нет. Нет.

окей. Ошибку написал, код скинул выше. что дальше?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778905
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopпервый пост темытаки не понятно в чем конкретно ошибка
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778907
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадятаки не понятно в чем конкретно ошибка

ибо ошибка не важна как таковая. и вопрос был не про ошибку, а про "как сделать". разница есть?
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778911
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Окей. Мне вообще не понятно зачем сюда приплели и так ухватились за ошибку.

Есть ChanelInterceptor в котором я могу отловить входящее сообщение: это может быть сообщение типа CONNECT, DISCONECT, MESSAGE и т.д. (согласно тому как работает stomp).

В этом интерцепторе, если команда CONNECT идет проверка пользователя через JWT токен.

Код: java
1.
2.
3.
4.
5.
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))));

    }



Если с токеном что-то не так то будет брошен Exception (ну и вообще если пойдет что-то не так, к примеру ошибка бд и тд.). Я ошибку не обрабатываю и как следствие ее обрабатывает обработчик spring-websocket (тобишь обработчик из либы). И он, при возникновении ошибки, высылает клиенту сообщение (в формате STOMP) об ошибке. Все ок, все замечательно.

Но я не хочу что бы клиент, который не прошел валидацию при CONNECT, был подключен к сокету, дабы сбавить нагрузку на систему. Как следствие мне нужно его как-то отключить от сокета. И вот тут стал вопрос как?

Я работал с либой websocket-api и там все было предельно просто в этом плане. Но вот тут есть трудности.

Спасибо Озверин-у который скинул ссылки где можно чет почитать.
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778918
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopОкей. Мне вообще не понятно зачем сюда приплели и так ухватились за ошибку.меняй ТЗ из первого поста на
if (1=1) разорвать канал.
И делов то).
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39778960
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЯ ошибку не обрабатываю и как следствие ее обрабатывает обработчик spring-websocket (тобишь обработчик из либы).а вот если б ты обработал ошибку, то смог бы закрыть ws

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

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

должен быть, но его нет.

Там не закрытие, а subscribe/unsubscribe - судя по интерфейсам но у меня сейчас нет времени посмотреть
...
Рейтинг: 0 / 0
Как отключить клиента от websocket? Spring + websocket + sockjs
    #39779050
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka, Это другая тема. Да, такое есть. Но это уже происходит после того как установлена связь.
...
Рейтинг: 0 / 0
90 сообщений из 90, показаны все 4 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить клиента от websocket? Spring + websocket + sockjs
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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