Browse Source

Merge branch '6.0.x'

pull/30869/head
Sébastien Deleuze 2 years ago
parent
commit
950c43b4e7
  1. 47
      framework-docs/modules/ROOT/pages/web/websocket/stomp/enable.adoc

47
framework-docs/modules/ROOT/pages/web/websocket/stomp/enable.adoc

@ -3,7 +3,7 @@
STOMP over WebSocket support is available in the `spring-messaging` and STOMP over WebSocket support is available in the `spring-messaging` and
`spring-websocket` modules. Once you have those dependencies, you can expose a STOMP `spring-websocket` modules. Once you have those dependencies, you can expose a STOMP
endpoint over WebSocket with xref:web/websocket/fallback.adoc[SockJS Fallback], as the following example shows: endpoint over WebSocket, as the following example shows:
[source,java,indent=0,subs="verbatim,quotes"] [source,java,indent=0,subs="verbatim,quotes"]
---- ----
@ -16,7 +16,7 @@ endpoint over WebSocket with xref:web/websocket/fallback.adoc[SockJS Fallback],
@Override @Override
public void registerStompEndpoints(StompEndpointRegistry registry) { public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/portfolio").withSockJS(); // <1> registry.addEndpoint("/portfolio"); // <1>
} }
@Override @Override
@ -49,9 +49,7 @@ The following example shows the XML configuration equivalent of the preceding ex
https://www.springframework.org/schema/websocket/spring-websocket.xsd"> https://www.springframework.org/schema/websocket/spring-websocket.xsd">
<websocket:message-broker application-destination-prefix="/app"> <websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/portfolio"> <websocket:stomp-endpoint path="/portfolio" />
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic, /queue"/> <websocket:simple-broker prefix="/topic, /queue"/>
</websocket:message-broker> </websocket:message-broker>
@ -64,35 +62,28 @@ messaging (that is, many subscribers versus one consumer). When you use an exter
check the STOMP page of the broker to understand what kind of STOMP destinations and check the STOMP page of the broker to understand what kind of STOMP destinations and
prefixes it supports. prefixes it supports.
To connect from a browser, for SockJS, you can use the To connect from a browser, for STOMP, you can use
https://github.com/sockjs/sockjs-client[`sockjs-client`]. For STOMP, many applications have https://github.com/stomp-js/stompjs[`stomp-js/stompjs`] which is the most
used the https://github.com/jmesnil/stomp-websocket[jmesnil/stomp-websocket] library actively maintained JavaScript library.
(also known as stomp.js), which is feature-complete and has been used in production for
years but is no longer maintained. At present the
https://github.com/JSteunou/webstomp-client[JSteunou/webstomp-client] is the most
actively maintained and evolving successor of that library. The following example code
is based on it:
[source,javascript,indent=0,subs="verbatim,quotes"] The following example code is based on it:
----
var socket = new SockJS("/spring-websocket-portfolio/portfolio");
var stompClient = webstomp.over(socket);
stompClient.connect({}, function(frame) {
}
----
Alternatively, if you connect through WebSocket (without SockJS), you can use the following code:
[source,javascript,indent=0,subs="verbatim,quotes"] [source,javascript,indent=0,subs="verbatim,quotes"]
---- ----
var socket = new WebSocket("/spring-websocket-portfolio/portfolio"); const stompClient = new StompJs.Client({
var stompClient = Stomp.over(socket); brokerURL: 'ws://domain.com/portfolio',
onConnect: () => {
stompClient.connect({}, function(frame) { // ...
} }
});
---- ----
Alternatively, if you connect through SockJS, you can enable the
xref:web/websocket/fallback.adoc[SockJS Fallback] on server-side with
`registry.addEndpoint("/portfolio").withSockJS()` and on JavaScript side,
by following
https://stomp-js.github.io/guide/stompjs/rx-stomp/using-stomp-with-sockjs.html[those instructions].
Note that `stompClient` in the preceding example does not need to specify `login` Note that `stompClient` in the preceding example does not need to specify `login`
and `passcode` headers. Even if it did, they would be ignored (or, rather, and `passcode` headers. Even if it did, they would be ignored (or, rather,
overridden) on the server side. See xref:web/websocket/stomp/handle-broker-relay-configure.adoc[Connecting to a Broker] overridden) on the server side. See xref:web/websocket/stomp/handle-broker-relay-configure.adoc[Connecting to a Broker]

Loading…
Cancel
Save