繁体   English   中英

@GetMapping 和 RSocketServer 与 spring-boot-starter-rsocket

[英]@GetMapping and RSocketServer with spring-boot-starter-rsocket

正在尝试https://www.baeldung.com/spring-boot-rsocket第 4 节中指定的 RSocket 请求/响应。 所以有一个 RSocketServer 自动配置并在端口 7000 上侦听。当从浏览器点击相同的方法时,无法连接到使用@GetMapping注释的方法

@RestController
public class MarketDataRestController {

    private final RSocketRequester rSocketRequester;

    public MarketDataRestController(RSocketRequester rSocketRequester) {
        this.rSocketRequester = rSocketRequester;
    }

    @GetMapping(value = "/current/{stock}")
    public Publisher<MarketData> current(@PathVariable("stock") String stock) {
        return rSocketRequester
          .route("currentMarketData")
          .data(new MarketDataRequest(stock))
          .retrieveMono(MarketData.class);
    }
}

当从浏览器请求相同时,期望能够连接到@GetMapping MarketDataRestControllercurrent()注释,例如: http://localhost:7000/current/APPLE 不知道如何连接到相同的。

您不能将@RequestMapping与 sockets 一起使用,请改用@MessageMapping

代替 Spring MVC 中的 @RequestMapping 或 @GetMapping 注解,我们将使用 @MessageMapping 注解:

 @Controller public class MarketDataRSocketController { private final MarketDataRepository marketDataRepository; public MarketDataRSocketController(MarketDataRepository marketDataRepository) { this.marketDataRepository = marketDataRepository; } @MessageMapping("currentMarketData") public Mono<MarketData> currentMarketData(MarketDataRequest marketDataRequest) { return marketDataRepository.getOne(marketDataRequest.getStock()); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM