[英]@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
MarketDataRestController
的current()
注釋,例如: 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.