here(バックエンドではRabbitMQを使用)と同様にWebアプリケーションを受信しました。 Tomcat上で動作し、通常のURL(例:http://host/server/
)を使用してアプリケーションに接続できます。また、Modernizr WebSocketsとSockJSを使用するJSPXページのデモクライアントも提供されました。デモクライアントの接続コードは次のようになります。JavaクライアントからSpring 4を使用して実装されたWebSocketを介してStompに接続
if (Modernizr.websockets) {
socket = new WebSocket('ws://host/server/endpointx');
}
else {
socket = new SockJS('/server/endpointy');
}
stompClient = Stomp.over(socket);
stompClient.connect(headers, function(frame) { ... });
....
デモクライアントが正常に動作します(私はブラウザでJSPXページをロードするとき、私は、サーバーに接続することができます)。しかし私の目標は、いくつかのJava STOMPライブラリを使用して同じサーバに接続することです。私は61613
としてport
を指定した場合
StompConnection connection = new StompConnection();
connection.open("host", port);
connection.connect(new HashMap<String, String>());
、接続は成功しますが、私は、直接のRabbitMQのないヒット:ActiveMQ Stomp libraryでたとえば:問題は、私が試したライブラリは、接続パラメータとしてホストとポートを必要とし、ありますサーバー(これは私が望むものではありません)。私はjava.io.DataInputStream.readByteでjava.io.EOFException (不明なソース) はorg.apache.activemq.transport.stompで、私はエラー
を取得する接続で、
8080
(または80
)を指定した場合org.apache.activemq.transport.stomp.StompConnection.receiveでorg.apache.activemq.transport.stomp.StompConnection.receive(StompConnection.java:77) で.StompWireFormat.unmarshal(StompWireFormat.java:137) (StompConnection .java:68) at org.apache.activemq.transport.stomp.StompConnection.connect(StompConnection.java:139) at .... stomp.impl.activemq.ActiveMQStompDriver.connect(ActiveMQStompDriver.java:39) ... 25もっと
とトレースがCONNECT
フレームが予想CONNECTED
フレーム(実際には、それは何も戻って受信しない)を受けたことがないので、これがあることを示しています。
私は困惑しています。間違ったポートを使用していますか?ライブラリの互換性に問題がありますか?または私は何とかTomcatに私がupgrade HTTP connection to WebSocketsにしたいことを示す必要がありますか?
上記の質問に答えることが難しい場合は、これも同様に便利です:Javaを使用してTomcat上で動作するWebSocketsメッセージングチャネル上のSTOMPでSpringアプリケーションに接続するにはどうすればよいですか?