java - 使用 java 套接字连接到 URL

标签 java sockets tomcat stomp

我有一个 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/

相关文章:

java - assertEquals 在 selenium 中有效,但在 JAVA 中无效

java - Spring Restful Service + Spring for android,上传文件时缺少参数

c# - 奇怪的 DllImport 行为(仅在 Unity3d 中)

tomcat - 从 NetBeans 在 tomcat 上部署应用程序时出现 HTTP 错误 503?

java - 从单独的 JFrame 获取数据

java - 使用 Smack XMPP 发送内嵌图像

java:读写操作上的单个套接字。全双工

c - 原始套接字中的 TCP 数据包 - Centos 6.6

jakarta-ee - 是否可以在 Tomcat 中为单个 webapp 运行 Logback?

tomcat - Tomcat 的 WLST 脚本