簡體   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