@Override protected void onFullTextMessage(WebSocketChannel clientChannel, BufferedTextMessage message) { handleMessage(clientChannel, message.getData()); }
public void readBlocking(StreamSourceFrameChannel channel) throws IOException { PooledByteBuffer pooled = channel.getWebSocketChannel().getBufferPool().allocate(); final ByteBuffer buffer = pooled.getBuffer(); try { for (; ; ) { int res = channel.read(buffer); if (res == -1) { buffer.flip(); data.write(buffer); this.complete = true; return; } else if (res == 0) { channel.awaitReadable(); } checkMaxSize(channel, res); if (!buffer.hasRemaining()) { buffer.flip(); data.write(buffer); buffer.compact(); if (!bufferFullMessage) { //if we are not reading the full message we return return; } } } } finally { pooled.close(); } }
private void readBufferedText(StreamSourceFrameChannel messageChannel, final BufferedTextMessage textMessage) { textMessage.read(messageChannel, new WebSocketCallback<BufferedTextMessage>() { @Override public void complete(WebSocketChannel channel, BufferedTextMessage context) { try { onFullTextMessage(channel, textMessage); } catch (IOException e) { AbstractReceiveListener.this.onError(channel, e); } } @Override public void onError(WebSocketChannel channel, BufferedTextMessage context, Throwable throwable) { AbstractReceiveListener.this.onError(channel, throwable); } }); }
/** * Utility method that reads a full text or binary message, including all fragmented parts. Once the full message is * read then the {@link #onFullTextMessage(WebSocketChannel, BufferedTextMessage)} or * {@link #onFullBinaryMessage(WebSocketChannel, BufferedBinaryMessage)} method will be invoked. * * @param messageChannel The message channel */ protected final void bufferFullMessage(StreamSourceFrameChannel messageChannel) { if (messageChannel.getType() == WebSocketFrameType.TEXT) { readBufferedText(messageChannel, new BufferedTextMessage(getMaxTextBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.BINARY) { readBufferedBinary(messageChannel, false, new BufferedBinaryMessage(getMaxBinaryBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.PONG) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxPongBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.PING) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxPingBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.CLOSE) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxCloseBufferSize(), true)); } }
/** * Utility method that reads a full text or binary message, including all fragmented parts. Once the full message is * read then the {@link #onFullTextMessage(WebSocketChannel, BufferedTextMessage)} or * {@link #onFullBinaryMessage(WebSocketChannel, BufferedBinaryMessage)} method will be invoked. * * @param messageChannel The message channel */ protected final void bufferFullMessage(StreamSourceFrameChannel messageChannel) { if (messageChannel.getType() == WebSocketFrameType.TEXT) { readBufferedText(messageChannel, new BufferedTextMessage(getMaxTextBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.BINARY) { readBufferedBinary(messageChannel, false, new BufferedBinaryMessage(getMaxBinaryBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.PONG) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxPongBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.PING) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxPingBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.CLOSE) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxCloseBufferSize(), true)); } }
@Override protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) { this.session.handleMessage(Type.TEXT, toMessage(Type.TEXT, message.getData())); }
return; checkMaxSize(channel, res); if (!buffer.hasRemaining()) { buffer.flip();
private void readBufferedText(StreamSourceFrameChannel messageChannel, final BufferedTextMessage textMessage) { textMessage.read(messageChannel, new WebSocketCallback<BufferedTextMessage>() { @Override public void complete(WebSocketChannel channel, BufferedTextMessage context) { try { onFullTextMessage(channel, textMessage); } catch (IOException e) { AbstractReceiveListener.this.onError(channel, e); } } @Override public void onError(WebSocketChannel channel, BufferedTextMessage context, Throwable throwable) { AbstractReceiveListener.this.onError(channel, throwable); } }); }
/** * Utility method that reads a full text or binary message, including all fragmented parts. Once the full message is * read then the {@link #onFullTextMessage(WebSocketChannel, BufferedTextMessage)} or * {@link #onFullBinaryMessage(WebSocketChannel, BufferedBinaryMessage)} method will be invoked. * * @param messageChannel The message channel */ protected final void bufferFullMessage(StreamSourceFrameChannel messageChannel) { if (messageChannel.getType() == WebSocketFrameType.TEXT) { readBufferedText(messageChannel, new BufferedTextMessage(getMaxTextBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.BINARY) { readBufferedBinary(messageChannel, false, new BufferedBinaryMessage(getMaxBinaryBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.PONG) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxPongBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.PING) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxPingBufferSize(), true)); } else if (messageChannel.getType() == WebSocketFrameType.CLOSE) { readBufferedBinary(messageChannel, true, new BufferedBinaryMessage(getMaxCloseBufferSize(), true)); } }
@Override protected void onFullTextMessage(final WebSocketChannel channel, final BufferedTextMessage message) throws IOException { ready(); onTextCallback.accept(message.getData()); }
public void readBlocking(StreamSourceFrameChannel channel) throws IOException { PooledByteBuffer pooled = channel.getWebSocketChannel().getBufferPool().allocate(); final ByteBuffer buffer = pooled.getBuffer(); try { for (; ; ) { int res = channel.read(buffer); if (res == -1) { buffer.flip(); data.write(buffer); this.complete = true; return; } else if (res == 0) { channel.awaitReadable(); } checkMaxSize(channel, res); if (!buffer.hasRemaining()) { buffer.flip(); data.write(buffer); buffer.compact(); if (!bufferFullMessage) { //if we are not reading the full message we return return; } } } } finally { pooled.close(); } }
private void readBufferedText(StreamSourceFrameChannel messageChannel, final BufferedTextMessage textMessage) { textMessage.read(messageChannel, new WebSocketCallback<BufferedTextMessage>() { @Override public void complete(WebSocketChannel channel, BufferedTextMessage context) { try { onFullTextMessage(channel, textMessage); } catch (IOException e) { AbstractReceiveListener.this.onError(channel, e); } } @Override public void onError(WebSocketChannel channel, BufferedTextMessage context, Throwable throwable) { AbstractReceiveListener.this.onError(channel, throwable); } }); }
@Override protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) throws IOException { handler.onMessage(context, message.getData()); }
public void readBlocking(StreamSourceFrameChannel channel) throws IOException { PooledByteBuffer pooled = channel.getWebSocketChannel().getBufferPool().allocate(); final ByteBuffer buffer = pooled.getBuffer(); try { for (; ; ) { int res = channel.read(buffer); if (res == -1) { buffer.flip(); data.write(buffer); this.complete = true; return; } else if (res == 0) { channel.awaitReadable(); } checkMaxSize(channel, res); if (!buffer.hasRemaining()) { buffer.flip(); data.write(buffer); buffer.compact(); if (!bufferFullMessage) { //if we are not reading the full message we return return; } } } } finally { pooled.close(); } }
@Override protected void onFullTextMessage(final WebSocketChannel channel, final BufferedTextMessage message) throws IOException { ready(); onTextCallback.accept(message.getData()); }
return; checkMaxSize(channel, res); if (!buffer.hasRemaining()) { buffer.flip();
@Override protected void onFullTextMessage(final WebSocketChannel channel, BufferedTextMessage bufferedTextMessage) throws IOException { String message = bufferedTextMessage.getData(); //========================================== // Event : String message //========================================== sendOnStringMessageClientEvent(message); }
return; checkMaxSize(channel, res); if (!buffer.hasRemaining()) { buffer.flip();
Undertow server = Undertow.builder() .addHttpListener(8080, "localhost") .setHandler(path() .addPrefixPath("/myapp", websocket(new WebSocketConnectionCallback() { @Override public void onConnect(WebSocketHttpExchange exchange, WebSocketChannel channel) { channel.getReceiveSetter().set(new AbstractReceiveListener() { @Override protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) { final String messageData = message.getData(); for (WebSocketChannel session : channel.getPeerConnections()) { WebSockets.sendText(messageData, session, null); } } }); channel.resumeReceives(); } })) .build(); server.start();
@Override protected void onFullTextMessage(final WebSocketChannel channel, final BufferedTextMessage message) { try (final MinijaxUndertowWebSocketRequestContext ctx = new MinijaxUndertowWebSocketRequestContext(application, exchange)) { final MinijaxUndertowWebSocketBasicRemote basicRemote = new MinijaxUndertowWebSocketBasicRemote(channel); final Map<Class<?>, Object> params = new HashMap<>(); params.put(javax.websocket.Session.class, new MinijaxUndertowWebSocketSession(basicRemote)); params.put(String.class, message.getData()); endpoint.onMessage(params); } catch (final IOException ex) { LOG.warn("Exception handling websocket message: {}", ex.getMessage(), ex); } } }