使用 java 套接字连接到 URL

Connect to URL using java socket

我有一个 STOMP websocket 服务器在 localhost:8080/price-stream/ws

上接受连接

我正在尝试使用 Gozirra library which uses java.net.socket to connect, but the new Socket() method only accepts host and port parameters. Connection code 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 服务器配置,但我认为可以通过一些调整来实现。谢谢

我最终使用 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 class 以在建立连接后订阅频道。

session.subscribe("{channel name}", new StompFrameHandler() {