2013-05-02 3 views
0

내 BayeuxServer를 초기화하는 데 Spring annotation을 사용하고 있습니다. 웹 소켓 연결이 실패하거나 js($.cometd.websocketEnabled = false;)에서 비활성화 될 때 성공적으로 롱 폴링 다시 떨어지는 아니에요, 지금websocket spring 초기화로 긴 폴링 폴백

BayeuxServerImpl bean = new BayeuxServerImpl(); 

bean.setTransports(new WebSocketTransport(bean)); 

하지만 - 내 스프링 빈에서 전송을 설정하여 웹 소켓을 사용. Firebug 콘솔에 "400 Unknown Bayeux Transport"이라는 오류가 발생합니다.

LongPollingTransport은 (는) 라이브러리의 추상 클래스이기 때문에 LongPollingTransport을 에 설정할 수 없습니다. LongPollingTransport을 확장하고 setTransports API에서 지정하는 클래스를 만들려고했으나 작동하지 않았습니다. 제가 잘못했는지 알려주세요. 웹 소켓이 실패 할 경우를 대비하여 긴 폴링이 필요합니다.

cometd 버전 : 2.5.1

부두 버전 : 단지 하나의 전송로 BayeuxServer.setTransports(...)를 호출하여 7.6.8이

답변

1

, 당신은 기본적으로 모든 사용자가 명시 적으로 1 전송 만 사용 CometD를 이야기하고 있기 때문에 기능을 후퇴 해제 .

클래스 LongPollingTransport에는 사용할 특정 메커니즘에 따라 2 개의 하위 클래스가 있습니다. 클래스 JSONTransport을 사용할 수 있습니다.

CometD documentation은 XML을 사용하여 how to setup WebSocket with Spring의 예가 있지만 XML을 코드로 변환하여 주석으로 작업하는 것으로 충분하다는 점에 유의하십시오.

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

감사 시몬 :

기본적으로, 모든 귀결. 그게 효과가 있었어. 실제로 이전에 시도했지만 JSONTrasport 대신 JSONPTransport를 사용했다고 생각합니다. 그 점에 정말로주의를 기울이지 않았다. 내 잘못이야. 다시 한 번 감사드립니다! –