6
votes

STOMP Over Socket à l'aide de SockJS Impossible de se connecter avec Spring 4 Websket

Essayer d'utiliser le ressort 4 Websocket avec une socket sur une socket avec Sockjs. Et j'ai rencontré un problème.

Ma configuration:

Websocket.xml - une partie du contexte de printemps xxx

Code du contrôleur: < Pré> xxx

côté client: xxx

sortie: xxx

Ce que je fais mal?

J'ai trouvé des exemples dans Google (Tickerstocks ou quelque chose comme ça, des applications de vœux (exemple de printemps)) et tous me donnent la même erreur. J'essaie d'utiliser des standards avec la poignée de main (sans Sockjs) - même résultat).

Informations d'addition:

Méthode Public AjaxResponse Bonjour (); / Code> placé dans IndexController sur le contexte de la racine "/". Donc, je peux fournir un chemin complet: http: // localhost: 8080 / WS . Déployer testé tomcat7 et tomcat8.


4 commentaires

Pas vraiment pertinent mais je voudrais fortement vous suggère d'abandonner l'utilisation de fichiers de configuration basés sur XML et d'adopter Javaconfig globalement plutôt que de mélanger et de faire correspondre. Il existe un didacticiel complet sur la configuration en utilisant Javaconfig et Sockjs. Plus important encore, comment votre application est-elle déployée? C'est à la racine du serveur Web? parce que votre URL dans le JavaScript est absolue.


Puis-je supprimer complètement la configuration XML de mon application? Il ne diminuera pas la vitesse de mon application? Je peux supprimer tout XML et créer un Webconfig pour toute l'application? Ce tutoriel complet c'est une application de voeux (exemple au printemps) que je mentionne en question que je l'ai essayée.


Oui, vous n'avez pas besoin aucun xml du tout. Il ne ralentira certainement pas l'application - il peut même que votre XML n'a pas besoin d'être "compilé" dans le code de configuration. Il vous suffit de vous assurer de BOOTSTRAP Votre application avec la classe de configuration racine.


Boris L'araignée, écrivez une réponse sur Supprimer tout XML (inclure web.xml - faire un webinialisateur à la place) Je vais le marquer comme réponse. Après cela, j'écris du code avec Websocket, Sockjs et Stomp - et tout fonctionne.


4 Réponses :


0
votes

Je pense que votre problème peut être la même chose de Celui-ci Et sa réponse acceptée peut s'appliquer.

En bref: Vérifiez comment vous avez cartographié votre Dispatcherservlet. Pour que votre URL de point final soit http: // localhost: 8080 / WS Le Dispatcherservlet et La racine de votre application doit être définie comme "/".

"p > Il devrait s'agir de quelque chose comme ceci, dans votre web.xml : xxx

ceci ou vous devez inclure la racine contextuelle et la cartographie des répartiteurs dans votre URL de point final: xxx

J'espère que cela peut vous aider.

regarde.

heleno


2 commentaires

Je ne peux pas vérifier cela maintenant, car je n'ai plus de configuration XML à mon application


@dikkini, il suffit de supprimer la configuration XML à partir de votre application réussi à résoudre le problème ou si vous avez également fixé la cartographie de Disternerservlet et / ou la racine de contexte? Je suis curieux de la solution avec webinitializer. Tu ne peux pas la poster toi-même comme réponse?



3
votes

je suis Boris L'araignée conseil et j'ai commencé à utiliser la configuration Java (appconfig et webinit Files). de fichiers de configuration XML. Quand j'ai fini la migration - j'ai essayé Webockets - et ça marche! Je pensais que le problème principal était dans la configuration XML pour Websket.


0 commentaires

0
votes

Premièrement, vous avez défini le préfixe de destination avec l'application, vous devez donc ajouter «application» dans votre URL de la demande. par exemple. Si je voulais demander à '/ ws', je devrais créer des chaussettes avec le chemin '/ Server / App / WS', vous pouvez également coder avec var socket = nouveau sockjs ("") et que vous connaissez le "serveur" est votre nom de projet sur SpringMVC.

Deuxièmement, vous devez ajouter le chemin '/ app / *' à org.springframework.web.servlet.dispatchersservlet afin d'éviter le chemin avec préfixe '/ application' intercepté par intercepteur défini dans web.xml.


0 commentaires

0
votes

Je suis arrivé sur cette page et - merci à Boris La réponse acceptée a été motivée pour reconsidérer l'approche Java Contrairement à l'approche XML qui causait le - / INFO = 34424 avec erreur 404 ... Quiops Lost Connection - J'ai le printemps 4.2 dans mon projet et de nombreuses implémentations de Stompjs de Sockjs fonctionnent généralement bien avec les implémentations de démarrage de printemps. Cette implémentation de BaelDung a travaillé (pour moi sans passer du printemps 4.2 à 5 ou de démarrage). Après avoir utilisé les dépendances mentionnées dans son blog, cela m'a toujours donné la classeNotfoundverror. J'ai ajouté la dépendance ci-dessous pour le réparer.

 >>> SEND
destination:/app/chat
content-length:38

{"from":"nicholas","text":"try again"}

<<< MESSAGE
destination:/topic/messages
content-type:application/json;charset=UTF-8
subscription:sub-0
message-id:m3p096zk-11
content-length:53

{"from":"nicholas","text":"try again","time":"13:46"}


0 commentaires