if (WebSocketWireProtocol.HYBI_13.equals(wsVersion) || WebSocketWireProtocol.HYBI_8.equals(wsVersion)) { final IoBufferAllocatorEx<? extends WsBuffer> allocator = wsnSession.getBufferAllocator(); ByteBuffer messageNioBuf = allocator.allocate(response.getBytes().length + 4); IoBufferEx messageBuf = allocator.wrap(messageNioBuf).setAutoExpander(allocator);
WsBuffer wsBuffer = (ioBufferEx instanceof WsBuffer) ? (WsBuffer) ioBufferEx : session.getBufferAllocator().wrap(ioBufferEx.buf()); switch (wsMessage.getKind()) { case BINARY:
@Override protected void doFilterWrite(final NextFilter nextFilter, final WsnSession wsnSession, WriteRequest writeRequest) throws Exception { IoSession parent = wsnSession.getParent(); Encoding encoding = (Encoding) parent.getAttribute("encoding"); final WsMessage emptyWsMessage; final IoBufferAllocatorEx<?> allocator = wsnSession.getBufferAllocator(); switch(encoding) { case TEXT: emptyWsMessage = new WsTextMessage(allocator.wrap(allocator.allocate(0))); break; default: emptyWsMessage = new WsBinaryMessage(allocator.wrap(allocator.allocate(0))); } writeRequest.getFuture().addListener(new IoFutureListener<WriteFuture>() { @Override public void operationComplete(WriteFuture future) { if (logger.isDebugEnabled()) { logger.debug("HttpEmptyPacketWriterFilter writing empty packet."); } wsnSession.getParent().write(emptyWsMessage); } }); HttpResponseMessage message = (HttpResponseMessage) writeRequest.getMessage(); if ( message.getStatus() != HttpStatus.CLIENT_UNAUTHORIZED) { wsnSession.getFilterChain().remove(HttpEmptyPacketWriterFilter.this); } nextFilter.filterWrite(wsnSession, writeRequest); }
IoBufferAllocatorEx<? extends WsBuffer> allocator = wsnSession.getBufferAllocator();