spring-boot - 如何在 Spring-boot 中为 Rest 调用编写 webSockets?

标签 spring-boot websocket spring-websocket java-websocket

我是网络套接字编程的新手。我有超过 10 个用 @GetMapping 注释的方法,其中返回的数据是从 MySQL 数据库读取的。

任何人都可以帮助我了解如何编写 WebSockets。

我的WebRestController.java如下所示:

@CrossOrigin(origins = "http://localhost:4200", allowedHeaders="*")
@RestController
@RequestMapping("/api")
public class WebRestController {
    @GetMapping("/summary")
    public String Summary() { /* ... */}
    @GetMapping("/erday")
    public String Erday(String erday) { /* ... */}
    @GetMapping("/count")
    public String Count(@RequestParam Map<String,String> queryParam, 
        String date, String target) { /* ... */}
    @GetMapping("/details")
    public String Details(@RequestParam Map<String,String> queryParam, 
        String date, String target) { /* ... */}
    @GetMapping("/devmawah")
    public String DevMawah(@RequestParam Map<String,String> queryParam, 
        String date, String target) { /* ... */}
    // ....
}

我之前在网上尝试过很多次寻找解决方案,但找不到。我找到的只是聊天应用程序的示例,它们有 2 个端点用于发送和接收。

最佳答案

WebSockets 用于双向通信,而不是真正用于 REST 风格的服务(在我看来,HTTP 更优越)。核心区别在于 HTTP 本质上是一种请求-应答协议(protocol),非常适合 REST,而 WebSocket 则以消息为中心。当然,您可以认为请求-答复是基于消息的通信的特化。

有几篇关于此主题的文章(google REST over WebSocket),甚至还有一些 StackOverflow 问题详细介绍了优缺点,例如 Is ReST over websockets possible?

据我所知,允许您通过 WebSocket 执行类似于 REST 的操作而无需重写 RestController 的唯一方法是 swagger-socket ,但我不建议使用它,因为该项目现在似乎不活跃,而且似乎没有被广泛使用。

或者,您可以将 @RequestMapping@GetMapping 注释替换为 @MessageMapping注释并通过消息对您的 API 进行建模(例如,客户端向给定目的地发送一条“GET”消息,然后您发回一条包含资源的消息)。

关于spring-boot - 如何在 Spring-boot 中为 Rest 调用编写 webSockets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984497/

相关文章:

java - 无法在同一网络中按名称访问 Docker 容器

java - WebSockets 或 Http 哪一个用于实时应用程序?

java - 使用 java 8 的 google appengine 的 Websocket 或 native 套接字?

tomcat - 无法使用 Websocket 应用程序加载资源

java - Spring Boot 如何将响应发送到其他 URL

java - Spring Boot 没有 classDefinitionFound 错误

java - cvc-complex-type.2.4.c:匹配的通配符是严格的,但是找不到元素 'hdp:configuration'的声明

jax-rs - 基于 JaxRs 的 Swagger 的 spring boot 应用程序配置

spring - 如何使用 MBeanExporter 通过 JMX 公开 Spring WebSocketMessageBrokerStats

java - Spring Web Socket Java 客户端