我有一个 STOMP websocket 服务器接受 localhost:8080/price-stream/ws 上的连接
我正在尝试使用 Gozirra library 进行连接它使用 java.net.socket 进行连接,但新的 Socket() 方法只接受主机和端口参数。连接码here .有没有办法在套接字参数中定义完整的资源位置,以包括价格流/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 服务器配置,但我认为可以通过一些调整来实现。谢谢
最佳答案
我最终使用 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 类以在建立连接后订阅 channel 。
session.subscribe("{channel name}", new StompFrameHandler() {
关于java - 使用 java 套接字连接到 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301684/