共计 702 个字符,预计需要花费 2 分钟才能阅读完成。
websocket 在目前 web 中使用很广泛,比如在升级、系统监控等方面,使用起来很方便。避免了频繁向后端请求数据,造成了服务器资源的浪费。有时候我们对于一个 websocket 连接请求,需要定制特定的 response body 内容,那么如何在 spring 中对 websocket 定制 response 内容呢。
先说下场景:
1. 有一个 WebSocket endpoint,大概如下代码所示:
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(new ExceptionWebSocketHandlerDecorator(myWebSocketHandler), "/ws/") | |
.setAllowedOrigins("*") | |
.addInterceptors(myHandshakeInterceptor); | |
} |
在 myWebSocketHandler#beforeHandshake 中有一些检查项,用来在某些场景下给用户反馈拒接连接的 response,我想把消息放到 response body 中,大概如下代码所示:
response.setStatusCode(HttpStatus.BAD_GATEWAY); | |
try {response.getBody().write("Error".getBytes()); | |
response.getBody().flush(); | |
} catch (IOException e) {log.error("Error writing response", e); | |
} | |
return false; |
正文完