Stomp sur socket en utilisant sockjs ne peut pas se connecter avec le Printemps 4 WebSocket

D'essayer d'utiliser le Printemps 4 WebSocket avec PIÉTINER sur socket en utilisant sockjs.
Et j'ai fait face à un problème.

Ma configuration:

websocket.xml - une partie du printemps contexte

<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>       

Contrôleur de 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;
}

Côté 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);                                  
    });                                                           
});                                                               

De sortie:

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

Ce que je fais mal?

J'ai trouvé des exemples dans google (TickerStocks ou quelque chose comme ça, à l'accueil des demandes (exemple de Printemps)) et tous de me donner la même erreur. J'ai essayer d'utiliser WebSocket avec poignée de main (sans sockjs) - même résultat).

PLUS DE RENSEIGNEMENTS:

Méthode public AjaxResponse hello(); placé dans IndexController sur le contexte de la racine "/". Donc, je peux fournir le chemin d'accès complet: http://localhost:8080/ws.
Pour déployer testé tomcat7 et tomcat8.

  • Pas vraiment pertinente, mais je voudrais fortement vous suggère d'abandonner l'utilisation de XML en fonction des fichiers de configuration et d'adopter JavaConfig à l'échelle mondiale plutôt que de mélanger et assortir. Il y a un tutoriel complet sur cette mise en place à l'aide de JavaConfig et sockjs. De manière plus significative, la façon dont votre application est déployée? Il est à la racine du serveur? parce que votre URL dans le code Javascript est absolue.
  • Puissé-je supprimer complètement TOUTES les xml de config de mon application? Il l'habitude de diminuer la vitesse de mon application? Je peux supprimer tous les XML et créer un WebConfig pour l'ensemble de l'application? Ce tutoriel complet, il est de voeux application (par exemple par un Ressort) que j'ai mentionnée dans la question, que j'ai essayé.
  • Oui, vous n'avez pas besoin de tout xml à tous. Il va certainement pas ralentir la demande, il peut même accélérer votre XML n'a pas besoin d'être compilé en code de configuration. Vous avez juste besoin de faire des bootstrap votre demande avec la configuration de la racine de la classe.
  • Boris Araignée, d'écrire une réponse à propos de supprimer TOUT fichier xml (inclure web.xml - faire WebInitializer à la place) je vais le marquer comme réponse. Après cela, j'écris du code avec websocket, sockjs, stomp, et tout ce travail.
InformationsquelleAutor dikkini | 2014-03-18