Java – unable to connect to spring 4 websocket using sockjs stomp over socket
Try using sockjs to use spring 4 websocket with stomp on the socket
My configuration:
websocket. XML – part of the spring context
<websocket:message-broker application-destination-prefix="/app"> <websocket:stomp-endpoint path="/ws"> <websocket:sockjs/> </websocket:stomp-endpoint> <websocket:simple-broker prefix="/topic"/> </websocket:message-broker>
Controller code:
@MessageMapping("/ws") @SendTo("/topic/ws") public AjaxResponse hello() throws Exception { AjaxResponse ajaxResponse = new AjaxResponse(); ajaxResponse.setSuccess(true); ajaxResponse.addSuccessMessage("WEB SOCKET!!! HELL YEAH!"); return ajaxResponse; }
client:
var socket = new SockJS("<c:url value='/ws'/>"); var stompClient = Stomp.over(socket); stompClient.connect({},function(frame) { alert('Connected: ' + frame); stompClient.send("/app/ws",{},{}); stompClient.subscribe('/topic/ws',function(response){ alert(response.success); }); });
Output:
opening Web Socket... stomp.js:130 GET http://localhost:8080/ws/info 404 (Not Found) sockjs-0.3.js:807 Whoops! Lost connection to undefined stomp.js:130
What did I do wrong?
I found some examples in Google (tickerstocks or something like that, greeting application (spring example)), all of which gave me the same mistake I tried to use websocket and handshake (no sockjs) – the same result)
Supplementary information:
Method public ajaxresponse hello(); Put in indexcontroller of root context '/' So I can provide the full path: http: / / localhost: 8080 / WS To deploy tested Tomcat 7 and Tomcat 8
Solution
Following Boris the spider's advice, I started using java configuration (AppConfig and webinit files) instead of XML configuration files When I finish the migration – I try WebSockets – it works! I think the main problem is the XML configuration of websocket