Я использую Spring 4 + Websockets + Stomp JS library. Я не мог найти никакого способа настроить механизм ping/pong для websocket (heartbeat).Spring 4 + Websockets: как закрыть сеанс?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans" ...">
<websocket:message-broker>
<websocket:stomp-endpoint path="/cors/auth/clientEndpoint">
<websocket:handshake-handler ref="myHandshakeHandler" />
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/queue, /topic" />
<websocket:client-inbound-channel>
<websocket:interceptors>
<bean class="com.mycompany.myproject.utils.messaging.MyInboundChannelInterception"></bean>
</websocket:interceptors>
</websocket:client-inbound-channel>
</websocket:message-broker>
<bean id="myHandshakeHandler" class="com.mycompany.myproject.utils.security.MyHandshakeHandler" />
<bean class="org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean">
<property name="maxSessionIdleTimeout" value="120000" />
</bean>
В результате, я реализую свой собственный механизм пинг-понг/сообщений.
Одна из задач здесь - реализовать закрытие на стороне сервера websocket в случае, если сообщение ping больше 10 секунд от клиента.
И не нужно делать это с помощью Spring Websockets!
Может кто-нибудь может сказать мне, как получить доступ к объекту сеанса пользователя или закрыть этот сеанс через Spring Websockets?
Похоже, весна здесь очень ограничена.
Брайан, благодарю вас за ответ. Не удается ли достичь управления сердцебиением без sockJs? Мое приложение предназначено для современных браузеров, которые определенно поддерживают websockets. Как результат, sockJs бесполезен в моем случае, потому что мне не нужна эмуляция/резервное копирование. – walv
Вы можете вручную настроить это и проверить, как это делается в рамках (мы используем TaskSchedulers для периодического отправки пульса). SockJS не остановит вас здесь, он по возможности выбирает лучший доступный транспорт (websocket). Не забывайте, что даже если клиенты поддерживают веб-порты, сеть (прокси-серверы HTTP и другие) могут быть недовольны постоянными подключениями, такими как websockets. –
Хорошо, понял. Благодаря!Не уверен в этом утверждении: «Не забывайте, что даже если клиенты поддерживают веб-порты, сеть (HTTP-прокси и другие) может быть недовольна постоянными подключениями, такими как веб-узлы». Любое официальное доказательство этого? Почему он тяжелый? – walv