private HandshakeInfo createHandshakeInfo(URI url, Session jettySession) { HttpHeaders headers = new HttpHeaders(); jettySession.getUpgradeResponse().getHeaders().forEach(headers::put); String protocol = headers.getFirst("Sec-WebSocket-Protocol"); return new HandshakeInfo(url, headers, Mono.empty(), protocol); }
@Override public void onHandshakeResponse(UpgradeResponse response) { resp.setStatus(response.getStatusCode()); for (String header : response.getHeaderNames()) { switch (header.toLowerCase()) { case "connection": case "date": case "sec-websocket-accept": case "upgrade": continue; } for (String value : response.getHeaders(header)) { resp.addHeader(header, value); } } try { wsFactory.acceptWebSocket(req, resp); } catch (IOException e) { throw new RuntimeException(e); } async.complete(); } });
@Override public Map<String, List<String>> getHeaders() { return response.getHeaders(); } }
@Override public void onHandshakeResponse(UpgradeResponse response) { storeCookies(response.getHeaders()); }
public String getHeader(String name) List<String> values = getHeaders(name);
public String getHeader(String name) List<String> values = getHeaders(name);
private Object createJettyHandler(URI url, WebSocketHandler handler, MonoProcessor<Void> completion) { return new JettyWebSocketHandlerAdapter(handler, session -> { UpgradeResponse response = session.getUpgradeResponse(); HttpHeaders responseHeaders = new HttpHeaders(); response.getHeaders().forEach(responseHeaders::put); HandshakeInfo info = afterHandshake(url, responseHeaders); return new JettyWebSocketSession(session, info, this.bufferFactory, completion); }); }