Example usage for io.vertx.core.http ServerWebSocket close

List of usage examples for io.vertx.core.http ServerWebSocket close

Introduction

In this page you can find the example usage for io.vertx.core.http ServerWebSocket close.

Prototype

@Override
Future<Void> close();

Source Link

Document

The WebSocket handshake will be accepted when it hasn't yet been settled or when an asynchronous handshake is in progress.

Usage

From source file:io.advantageous.qbit.vertx.http.server.VertxServerUtils.java

License:Apache License

public WebSocket createWebSocket(final ServerWebSocket vertxServerWebSocket) {

    final MultiMap<String, String> params = paramMap(vertxServerWebSocket);

    final MultiMap<String, String> headers = vertxServerWebSocket.headers().size() == 0 ? MultiMap.empty()
            : new MultiMapWrapper(vertxServerWebSocket.headers());

    /* Create a websocket that uses vertxServerWebSocket to forwardEvent messages. */
    final WebSocket webSocket = webSocketBuilder().setUri(vertxServerWebSocket.uri())
            .setRemoteAddress(vertxServerWebSocket.remoteAddress().toString())
            .setWebSocketSender(new WebSocketSender() {
                @Override// www.  ja va 2 s .c om
                public void sendText(String message) {
                    vertxServerWebSocket.writeFinalTextFrame(message);
                }

                @Override
                public void sendBytes(byte[] message) {
                    vertxServerWebSocket.writeFinalBinaryFrame(Buffer.buffer(message));
                }

                @Override
                public void close() {
                    vertxServerWebSocket.close();
                }
            }).setHeaders(headers).setParams(params).build();

    /* Handle open. */
    webSocket.onOpen();

    /* Handle close. */
    vertxServerWebSocket.closeHandler(event -> webSocket.onClose());

    final Buffer[] bufferRef = new Buffer[1];

    final int[] count = new int[1];

    /* Handle frame. */
    vertxServerWebSocket.frameHandler(event -> {

        count[0]++;

        if (event.isFinal()) {
            //If the count is 1 then all of the data is in bufferRef, else all of the data but the last bit is in bufferRef.
            final Buffer finalBuffer = count[0] > 1 ? createNewBuffer(bufferRef[0], event.binaryData())
                    : event.binaryData();
            if (event.isBinary()) {
                ((NetSocketBase) webSocket).setBinary();
                webSocket.onBinaryMessage(finalBuffer.getBytes());
            } else {
                webSocket.onTextMessage(finalBuffer.toString("UTF-8"));
            }

            count[0] = 0;
            bufferRef[0] = null;
        } else {
            bufferRef[0] = createNewBuffer(bufferRef[0], event.binaryData());
        }
    });

    /* Handle error. */
    vertxServerWebSocket.exceptionHandler(event -> {
        if (event instanceof Exception) {
            webSocket.onError((Exception) event);
        } else {
            webSocket.onError(new Exception(event));
        }
    });

    return webSocket;
}

From source file:org.entcore.workspace.controllers.AudioRecorderHandler.java

License:Open Source License

private void save(String id, String name, JsonObject infos, final ServerWebSocket ws) {
    JsonObject message = new JsonObject().put("action", "save").put("id", id).put("session", infos);
    if (isNotEmpty(name)) {
        message.put("name", name);
    }//  w w  w  . j a  v  a2  s. co  m
    eb.send(AudioRecorderWorker.class.getSimpleName(), message,
            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {

                @Override
                public void handle(Message<JsonObject> event) {
                    if ("ok".equals(event.body().getString("status"))) {
                        ws.writeTextMessage("ok");
                    } else {
                        ws.writeTextMessage(event.body().getString("message"));
                    }
                    ws.close();
                }
            }));
}

From source file:org.entcore.workspace.controllers.AudioRecorderHandler.java

License:Open Source License

private void cancel(String id, final ServerWebSocket ws) {
    eb.send(AudioRecorderWorker.class.getSimpleName(), new JsonObject().put("action", "cancel").put("id", id),
            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {

                @Override/*from   ww  w  . j a v  a2  s .  c o m*/
                public void handle(Message<JsonObject> event) {
                    if (ws != null) {
                        if ("ok".equals(event.body().getString("status"))) {
                            ws.writeTextMessage("ok");
                        } else {
                            ws.writeTextMessage(event.body().getString("message"));
                        }
                        ws.close();
                    }
                }
            }));
}