/** * Default constructor that creates {@link WebSocketServerFactory} through * its default constructor thus using a default {@link WebSocketPolicy}. */ public JettyRequestUpgradeStrategy() { this.policy = WebSocketPolicy.newServerPolicy(); }
@Override protected void resumeReceiving() { SuspendToken tokenToUse = this.suspendToken; this.suspendToken = null; if (tokenToUse != null) { tokenToUse.resume(); } }
@Override public void ping() throws IOException { session.getRemote().sendString(WebsocketMessages.PING); }
private RemoteEndpoint getRemoteEndpoint() throws IOException { try { return getNativeSession().getRemote(); } catch (WebSocketException ex) { throw new IOException("Unable to obtain RemoteEndpoint in session " + getId(), ex); } }
@Override public void onWebSocketClose(int statusCode, String reason) { getSession().close(); super.onWebSocketClose(statusCode, reason); }
@Override protected void closeInternal(CloseStatus status) throws IOException { getNativeSession().close(status.getCode(), status.getReason()); }
@Override public boolean isOpen() { return getNativeSession().isOpen(); }
@Override public void setTextMessageSizeLimit(int messageSizeLimit) { checkNativeSessionInitialized(); getNativeSession().getPolicy().setMaxTextMessageSize(messageSizeLimit); }
@Override protected void sendBinaryMessage(BinaryMessage message) throws IOException { getRemoteEndpoint().sendBytes(message.getPayload()); }
@Override public void setBinaryMessageSizeLimit(int messageSizeLimit) { checkNativeSessionInitialized(); getNativeSession().getPolicy().setMaxBinaryMessageSize(messageSizeLimit); }
@Override public void onWebSocketConnect(Session sess) { super.onWebSocketConnect(sess); sess.setIdleTimeout(10000); }
@Override public InetSocketAddress getRemoteAddress() { checkNativeSessionInitialized(); return getNativeSession().getRemoteAddress(); }
@Override public int getTextMessageSizeLimit() { checkNativeSessionInitialized(); return getNativeSession().getPolicy().getMaxTextMessageSize(); }
@Override public int getBinaryMessageSizeLimit() { checkNativeSessionInitialized(); return getNativeSession().getPolicy().getMaxBinaryMessageSize(); }
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 protected void sendPingMessage(PingMessage message) throws IOException { getRemoteEndpoint().sendPing(message.getPayload()); }
@Override protected void sendPongMessage(PongMessage message) throws IOException { getRemoteEndpoint().sendPong(message.getPayload()); }
@Override public InetSocketAddress getLocalAddress() { checkNativeSessionInitialized(); return getNativeSession().getLocalAddress(); }
@Override protected void suspendReceiving() { Assert.state(this.suspendToken == null, "Already suspended"); this.suspendToken = getDelegate().suspend(); }