首页 > 解决方案 > Spring boot 在@MessageMapping 中获取域名

问题描述

在 Spring Boot 中,我可以通过@RequestHeader String hostin获取域@RequestMapping 但是我怎样才能在 in 中做同样的事情@MessageMapping呢?

例如。

@RequestMapping("/abc")
public String getHost(@RequestHeader String host) {
    return host;
}

我把我的弹簧靴放在里面,比如说,www.example.com然后当我访问时www.example.com/abc我回来了www.example.com

我想在@MessageMapping代码中做同样的事情

下面是我的@MessageMapping代码。

@MessageMapping("/cba")
public void cba(SimpleRequest request, SimpMessageHeaderAccessor accessor) {
    //System.out.println(host);
}

SimpleRequest是来自我的 websocket 客户端的请求 obj

@MessageMapping我想在我的代码中获取域名

谢谢

标签: javaspring-bootwebsocket

解决方案


您可以尝试使用@Header注释参见下面的示例

@MessageMapping("/optionalHeaders")
public void optionalHeaders(@Header(name="foo", required=false) String foo1, @Header("foo") Optional<String> foo2) {
  this.method = "optionalHeaders";
  this.arguments.put("foo1", foo1);
  this.arguments.put("foo2", (foo2.isPresent() ? foo2.get() : null));
}

推荐阅读