Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java套接字连接到URL_Java_Sockets_Tomcat_Stomp - Fatal编程技术网

使用java套接字连接到URL

使用java套接字连接到URL,java,sockets,tomcat,stomp,Java,Sockets,Tomcat,Stomp,我有一个STOMP websocket服务器,它接受本地主机上的连接:8080/price stream/ws 我正在尝试使用使用java.net.socket进行连接,但是新的socket()方法只接受主机和端口参数。连接代码。是否有办法在套接字参数中定义完整的资源位置,以包括价格流/ws位置 Client c; try { c = new Client("localhost", 8080, "guest", "guest"); c.subscribe(

我有一个STOMP websocket服务器,它接受本地主机上的连接:8080/price stream/ws

我正在尝试使用使用java.net.socket进行连接,但是新的socket()方法只接受主机和端口参数。连接代码。是否有办法在套接字参数中定义完整的资源位置,以包括价格流/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();
    }

如果做不到这一点,服务器端是否有办法转发SpringWebSocket连接请求?换句话说,我的服务器是一个运行在tomcat上的SpringWebApp。有没有一种方法可以将请求转发到我的服务器的根目录(在本例中为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类配置为在建立连接后订阅通道

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

否。无法在套接字参数中定义资源位置。资源位置是HTTP的一部分,而不是TCP。为什么不使用HTTP API?滚动您自己的HTTP客户端代码充满了危险。我曾试图使用SSE,但实际上我需要双向通信。价格流数据已经在浏览器中使用,因此我希望重新使用现有的服务器来传输到Swing GUI,并添加一些通道供Java GUI使用。您是否建议这是一个坏主意,并且我真的应该使用标准套接字进行java->java通信?