【问题标题】:Use @PathParam(javax.websocket.server.PathParam) in WebSocketConfigurer for Spring Boot application在 WebSocketConfigurer 中为 Spring Boot 应用程序使用 @PathParam(javax.websocket.server.PathParam)
【发布时间】:2017-06-07 14:09:31
【问题描述】:

我创建了一个 Spring Boot 应用程序,我想在其中使用 Web Sockets。当我在没有参数的情况下使用它时,它工作正常。下面是不带参数的代码

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer  {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new ABC(), "/getABC").setAllowedOrigins("*");
        registry.addHandler(new XYZ(), "/getXYZ").setAllowedOrigins("*");
    }
}

但现在我需要使用@PathParam 将参数传递给它。我无法在此配置中使用它,例如

registry.addHandler(new XYZ(), "/getXYZ{someId}").setAllowedOrigins("*");

我的处理程序代码:

public class XYZ extends TextWebSocketHandler {

        static List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
        String someId;

        public XYZ() {
        }

        public XYZ(@PathParam(value = "someId") String someId) {
            this.someId= someId;
        }

        @Override
        public void afterConnectionEstablished(WebSocketSession session) throws Exception {
            // the messages will be broadcasted to all users.
            sessions.add(session);
        }
    }

【问题讨论】:

  • 您找到解决方案了吗?我被困在同一点上。

标签: java spring-boot websocket java-websocket


【解决方案1】:

我认为语法有问题,请尝试使用

public XYZ(@PathParam("someId") String someId)

【讨论】:

  • 这个构造函数已经存在于处理程序中。在 Spring Boot 的情况下,如何从 WebSocketConfig 传递它是一个问题。当我们使用@ServerEndpoint 注册处理程序时,这将正常工作。
猜你喜欢
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 2023-03-16
  • 2021-10-24
  • 2019-08-10
相关资源
最近更新 更多