我有一个STOMP websocket服务器接受localhost上的连接:8080 / price-stream / ws
我正在尝试使用使用java.net.socket连接的Gozirra library进行连接,但新的Socket()方法只接受主机和端口参数。连接代码here。有没有办法在套接字参数中定义完整的资源位置,以包含price-stream / ws位置?
Client c;
try {
c = new Client("localhost", 8080, "guest", "guest");
c.subscribe("topic/pricechannel1", new Listener() {
@Override
public void message(Map headers, String body) {
System.out.println(body);
}
});
c.unsubscribe("topic/pricechannel1"); // Unsubscribe all listeners
c.disconnect();
} catch (LoginException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如果失败了,有没有办法在服务器端我可以转发Spring websocket连接的请求?换句话说,我的服务器是在tomcat上运行的Spring webapp。有没有办法可以将请求转发到我的服务器的根目录,即localhost:8080,在这种情况下,转发到tomcat中的指定资源位置。我不是很熟悉Linux服务器配置,但我认为可以进行一些调整。感谢
答案 0 :(得分:1)
我最终使用Spring 4.2 StompClient连接到我的主机这里是代码:
WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
stompClient.setMessageConverter(converter);
StompSessionHandler handler = new WSClient(); //custom implementation
String url = "ws://{URL}/ws/websocket";
stompClient.connect(url, handler);
然后配置我的WSClient类以在建立连接后订阅该频道。
session.subscribe("{channel name}", new StompFrameHandler() {