使用java socket

时间:2015-07-08 19:14:37

标签: java sockets tomcat stomp

我有一个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服务器配置,但我认为可以进行一些调整。感谢

1 个答案:

答案 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() {