- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(websocketTestHandler(), "/websocket-test");
}
最佳答案
如果您想使用 TextWebSocketHandler
,您可以将拍卖 ID 作为 URL 路径的一部分传递。您必须在握手期间复制 WebSocket session 的路径(这是您可以访问 ServerHttpRequest
的唯一位置,因为握手是一个 http 请求),然后从您的处理程序中检索该属性。
这是实现:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(auctionHandler(), "/auction/*")
.addInterceptors(auctionInterceptor());
}
@Bean
public HandshakeInterceptor auctionInterceptor() {
return new HandshakeInterceptor() {
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
// Get the URI segment corresponding to the auction id during handshake
String path = request.getURI().getPath();
String auctionId = path.substring(path.lastIndexOf('/') + 1);
// This will be added to the websocket session
attributes.put("auctionId", auctionId);
return true;
}
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Exception exception) {
// Nothing to do after handshake
}
};
}
@Bean
public WebSocketHandler auctionHandler() {
return new TextWebSocketHandler() {
public void handleTextMessage(WebSocketSession session, TextMessage message) throws IOException {
// Retrieve the auction id from the websocket session (copied during the handshake)
String auctionId = (String) session.getAttributes().get("auctionId");
// Your business logic...
}
};
}
}
new WebSocket('ws://localhost:8080/auction/1');
关于spring - Spring 中 WebSocketConfigurer addHandler 中的路径参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49378759/
我可以使用通过 WebSocketConfigurer 配置的 websocket 或使用 @Scheduled() 来安排任务,没有任何问题。 但是,当我同时使用它们时,java 不会编译。 @Sc
我使用“TextWebSocketHandler”作为 websockets 和“WebSocketConfigurer”来配置 websocket。 我有一个场景,需要对处理程序的不同实例进行处理。
我目前正在使用该类配置我的 Spring Websocket public class WebSocketConfig extends WebSocketMessageBrokerConfigurat
我正在尝试在 中注册一个 WebsocketHandler Grails 3.2.x 带有 的应用程序spring-websocket 插入。 我尝试使用 grails create-web-sock
我创建了一个 Spring Boot 应用程序,我想在其中使用 Web 套接字。当我在没有参数的情况下使用它时,它工作正常。下面是不带参数的代码 @Configuration @EnableWebSo
我是一名优秀的程序员,十分优秀!