2012-07-12 1 views
0

저는 텍스트 기반 프로토콜을 사용하여 서버와 (전이중) 통신 할 수있는 GWT (2.4.0) 응용 프로그램을 빌드하려고합니다. 이를 위해 Kaazing Websocket Gateway 버전 3.3.2를 사용하여 프록시 역할을합니다.Kaazing 웹 소켓 <type> 프록시</type> 구성을 사용하여 GWT 응용 프로그램에서 메시지를받는 방법?

GWT 애플리케이션 < ----- [웹 소켓] ----->카징 < ----- [TCP] ----->백엔드 서버

이 내 카징 구성입니다 :

<service> 
    <accept>ws://127.0.0.1:9444/foobar</accept> 
    <connect>tcp://localhost:50189</connect> 
    <type>proxy</type> 
    <cross-site-constraint> 
    <allow-origin>http://127.0.0.1:8888</allow-origin> 
    </cross-site-constraint> 
</service> 

이 설정은 카징 클라이언트의 자바 구현 작동합니다. 이제 GWT 응용 프로그램에서이 서비스를 사용하고 싶습니다.

WebSocket ws; 
    try { 
     ws = new WebSocket("ws://127.0.0.1:9444/foobar"); 
     ws.addCloseHandler(new CloseHandler() { 
      @Override 
      public void onClose(CloseEvent ev) { 
      } 
     }); 
     ws.addMessageHandler(new MessageHandler() { 
      @Override 
      public void onMessage(MessageEvent ev) { 
       System.out.println(ev.getData()); 
      } 
     }); 
     ws.addOpenHandler(new OpenHandler() { 
      @Override 
      public void onOpen(OpenEvent ev) { 
      } 
     }); 
    } catch (WebSocketException e) { 
     e.printStackTrace(); 
    } 

GWT에서 클라이언트가 성공적으로 백엔드 서버로 텍스트를 보낼 수 있습니다

이는 GWT 클라이언트 구현에 대한 내 코드입니다. 서버의 응답을 처리 할 수 ​​없습니다. ev.getData()이 호출되면 JavaScript 예외가 발생합니다. //127.0.0.1 : 나는 WS에 위의 코드에서 웹 소켓 주소를 변경하는 경우

Uncaught JavaScript exception [Uncaught java.lang.ClassCastException: com.google.gwt.core.client.JavaScriptObject$ cannot be cast to java.lang.String] 

9444/ 반향 카징를 사용하는 서비스를 에코, 내가 보내는 텍스트 성공적으로 GWT 응용 프로그램에 의해 수신된다. 프록시 (또는 브로드 캐스트)으로 서비스를 다시 변경하면 위의 JavaScript 예외는 서버에서 메시지를 수신 할 때마다 발생합니다.

Java 프로그램의 동일한 코드 (Kaazing java 클라이언트 사용)는 정상적으로 작동합니다.

나는 GWT 전문가가 아니므로 문제를 더 디버깅 할 수있는 방법이 있습니까? 아니면 그냥 볼 수없는 간단한 해결책이 있습니까?

답변

0

나는 그 문제를 전에도 본 적이 있다고 생각합니다. gwtclient.gwt.xml 파일 콘텐츠를 공유 하시겠습니까? 또는 GWT 클라이언트의 'gwtclient.gwt.xml'에서 ByteSocket 또는 WebSocket 중 어느 것을 사용하는지에 따라 '또는'을 추가하십시오. 이 도움이

희망,

-Marcelo

+0

매우 마르셀로을 주셔서 감사합니다. 날 올바른 방향으로 가리켰 잖아. Kaazing Demo의 일부 gwtclient.gwt.xml 파일을 검토 한 결과 누락 된 JavaScript 파일에 대한 참조를 발견했습니다. (ByteSockets에 대한 Kaazing 데모가 작동하지 않는 이유는 gwt.xml에도 파일을 포함하는 것을 잊었 기 때문입니다.) 누락 된 JavaScript 파일은/lib/client/javascript /의 Kaazing Archive에 있습니다. 내 gwt.xml 파일에 WebSocket.js를 포함시킨 후 작동했습니다. 고맙습니다! – captn