2013-05-02 2 views
0

J'utilise les annotations Spring pour initialiser mon BayeuxServer. Je permis websocket en réglant le transport dans mon grain de printemps -Longback de relève avec initialisation de ressort à douille

BayeuxServerImpl bean = new BayeuxServerImpl(); 

bean.setTransports(new WebSocketTransport(bean)); 

Mais maintenant, lorsque la connexion websocket échoue ou est désactivé dans js($.cometd.websocketEnabled = false;), ce n'est pas retomber à succès à long sondage. Il renvoie l'erreur "400 Unknown Bayeux Transport" dans la console firebug.

Je n'ai pas pu définir LongPollingTransport dans setTransports car LongPollingTransport est une classe abstraite de la bibliothèque. J'ai essayé de créer une classe qui s'étend LongPollingTransport et en le spécifiant dans l'API setTransports, mais cela n'a pas fonctionné non plus. S'il vous plaît laissez-moi savoir si je fais quelque chose de mal. Nous avons besoin d'un long sondage pour travailler en cas de défaillance des Websockets.

version cometd: 2.5.1

version jetée: 7.6.8

Répondre

1

En appelant BayeuxServer.setTransports(...) avec un seul transport, vous désactivez essentiellement toute chute arrière capacité puisque vous dites explicitement cometd à utiliser 1 transport uniquement .

La classe LongPollingTransport a 2 sous-classes en fonction du mécanisme spécifique à utiliser; vous souhaiterez peut-être utiliser la classe JSONTransport.

Notez que le CometD documentation a un exemple de how to setup WebSocket with Spring utilisant XML, mais il suffit de traduire le code XML en code pour qu'il fonctionne avec les annotations.

Au fond, tout cela se résume à:

bayeuxServer.setTransports(new WebSocketTransport(bayeuxServer), new JSONTransport(bayeuxServer)); 
+0

Merci Simone. Ça a marché. En fait, j'ai déjà essayé cela mais je pense que j'ai utilisé 'JSONPTransport' au lieu de' JSONTrasport'. N'a pas vraiment fait attention à cela. Ma faute. Merci encore! –

Questions connexes