저는 텍스트 기반 프로토콜을 사용하여 서버와 (전이중) 통신 할 수있는 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 전문가가 아니므로 문제를 더 디버깅 할 수있는 방법이 있습니까? 아니면 그냥 볼 수없는 간단한 해결책이 있습니까?
매우 마르셀로을 주셔서 감사합니다. 날 올바른 방향으로 가리켰 잖아. Kaazing Demo의 일부 gwtclient.gwt.xml 파일을 검토 한 결과 누락 된 JavaScript 파일에 대한 참조를 발견했습니다. (ByteSockets에 대한 Kaazing 데모가 작동하지 않는 이유는 gwt.xml에도 파일을 포함하는 것을 잊었 기 때문입니다.) 누락 된 JavaScript 파일은/lib/client/javascript /의 Kaazing Archive에 있습니다. 내 gwt.xml 파일에 WebSocket.js를 포함시킨 후 작동했습니다. 고맙습니다! – captn