private void fireCloseEvent() { if (closeFired.compareAndSet(false, true)) { manager.remove(this); manager.getListener().onClose(this); } }
@Override protected void onError(WebSocketChannel channel, Throwable cause) { super.onError(channel, cause); if (isOpen()) manager.getListener().onError(this, cause); }
@Override protected void onFullTextMessage(final WebSocketChannel channel, BufferedTextMessage message) throws IOException { manager.getListener().onText(this, message.getData()); super.onFullTextMessage(channel, message); touchLastActivityTime(); }
@Override protected void onFullPingMessage(final WebSocketChannel channel, BufferedBinaryMessage message) throws IOException { super.onFullPingMessage(channel, message); touchLastActivityTime(); final ByteBuffer buf = WebSockets.mergeBuffers(message.getData().getResource()); manager.getListener().onPing(this, buf); }
@Override protected void onFullBinaryMessage(final WebSocketChannel channel, BufferedBinaryMessage message) throws IOException { final ByteBuffer buf = WebSockets.mergeBuffers(message.getData().getResource()); manager.getListener().onBinary(this, buf); super.onFullBinaryMessage(channel, message); touchLastActivityTime(); }
@Override protected void onFullPongMessage(final WebSocketChannel channel, BufferedBinaryMessage message) throws IOException { super.onFullPongMessage(channel, message); touchLastActivityTime(); final ByteBuffer buf = WebSockets.mergeBuffers(message.getData().getResource()); manager.getListener().onPong(this, buf); }
@Override protected void onCloseMessage(CloseMessage message, WebSocketChannel channel) { super.onCloseMessage(message, channel); manager.getListener().onDisconnect(this, message.getCode(), message.getReason()); channel.addCloseTask(ch -> fireCloseEvent()); touchLastActivityTime(); }
UndertowEndpoint createEndpoint(WebSocketChannel channel) { final UndertowEndpoint endpoint = new UndertowEndpoint(this, channel); try { channel.setOption(Options.TCP_NODELAY, NODELAY); } catch (IOException e) { throw new OptionAssignmentException("Error setting option", e); } channel.getReceiveSetter().set(endpoint); channel.resumeReceives(); scanner.addEndpoint(endpoint); listener.onConnect(endpoint); if (idleTimeoutMillis != 0) { channel.setIdleTimeout(idleTimeoutMillis); } return endpoint; }