如何通过基于Java的客户端(Java类或单元测试)连接到基于Spring的Websockets?

时间:2017-07-08 01:19:27

标签: java spring junit websocket spring-websocket

是WebSockets的新手......

通过遵循编码教程学习如何实现基于Spring的WebSockets:

http://www.baeldung.com/websockets-spring

我的maven pom.xml:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-websocket</artifactId>
    <version>4.0.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-messaging</artifactId>
    <version>4.0.3.RELEASE</version>
</dependency>

WebSocket控制器:

@Controller
public class WebSocketController {

    @MessageMapping("/messages")
    @SendTo("/topic/messages")
    public OutputMessage send(final Message message) throws Exception {
        final String time = new SimpleDateFormat("HH:mm").format(new Date());
        return new OutputMessage(message.getFrom(), message.getText(), time);
    }
}

输出消息:

public class OutputMessage {

    private String from;
    private String text;
    private String time;

    // Constructor
    // Getters and Setters
}

消息(传入):

public class Message {

    private String from;
    private String text;

    // Constructor
    // Getters and Setters
}

当我将war文件部署到我的Tomcat 7容器并打开浏览器并将其指向:

http://localhost:8080/myapp/messages

在网络浏览器中收到以下回复:

Can "Upgrade" only to "WebSocket".

本教程的作者使用JavaScript作为访问此Web Socket的客户端...

问题(S):

  1. 如何通过Java代码(而不是JavaScript)访问此Web套接字(发布消息并在响应中查看输出消息)?

  2. 是否有一个Java库(最好是一个与Spring一起工作的库)可以让我这样做(对不起,很多Internet上的例子都是JavaScript Web套接字客户端)?

  3. 有没有办法通过JUnit测试访问此调用?

  4. 我是否应该使用8080以下的其他端口用于WebSockets?如果是,我该如何配置?

0 个答案:

没有答案