private void appendPayloadClose(StringBuilder builder) { builder .append(",CloseCode=").append(getCloseCode()) .append(",Reason="); String reason = getCloseReason(); if (reason == null) { builder.append("null"); } else { builder.append("\"").append(reason).append("\""); } }
private void appendPayloadText(StringBuilder builder) { if (appendPayloadCommon(builder)) { // Nothing more to append. return; } builder.append("\""); builder.append(getPayloadText()); builder.append("\""); }
/** * Send a text frame to the server. * * <p> * This method is an alias of {@link #sendFrame(WebSocketFrame) * sendFrame}{@code (WebSocketFrame.}{@link * WebSocketFrame#createTextFrame(String) * createTextFrame}{@code (payload).}{@link * WebSocketFrame#setFin(boolean) setFin}{@code (fin))}. * </p> * * @param payload * The payload of a text frame. * * @param fin * The FIN bit value. * * @return * {@code this} object. */ public WebSocket sendText(String payload, boolean fin) { return sendFrame(WebSocketFrame.createTextFrame(payload).setFin(fin)); }
/** * Create a close frame. * * @return * A WebSocket frame whose FIN bit is true, opcode is * {@link WebSocketOpcode#CLOSE CLOSE} and payload is * {@code null}. */ public static WebSocketFrame createCloseFrame() { return new WebSocketFrame() .setFin(true) .setOpcode(CLOSE); }
/** * Create a continuation frame. Note that the FIN bit of the * returned frame is false. * * @return * A WebSocket frame whose FIN bit is false, opcode is * {@link WebSocketOpcode#CONTINUATION CONTINUATION} and * payload is {@code null}. */ public static WebSocketFrame createContinuationFrame() { return new WebSocketFrame() .setOpcode(CONTINUATION); }
/** * Create a binary frame. * * @param payload * The payload for a newly created frame. * * @return * A WebSocket frame whose FIN bit is true, opcode is * {@link WebSocketOpcode#BINARY BINARY} and payload is * the given one. */ public static WebSocketFrame createBinaryFrame(byte[] payload) { return new WebSocketFrame() .setFin(true) .setOpcode(BINARY) .setPayload(payload); }
return new WebSocketFrame() .setFin(fin) .setRsv1(rsv1) .setRsv2(rsv2) .setRsv3(rsv3) .setOpcode(opcode) .setMask(mask) .setPayload(payload);
/** * Possibly-null {@link net.dv8tion.jda.core.requests.CloseCode CloseCode} * representing the meaning for this DisconnectEvent * * <p><b>This is {@code null} if this disconnect did either not happen because the Service closed the session * (see {@link #isClosedByServer()}) or if there is no mapped CloseCode enum constant for the service close code!</b> * * @return Possibly-null {@link net.dv8tion.jda.core.requests.CloseCode CloseCode} */ public CloseCode getCloseCode() { return serverCloseFrame != null ? CloseCode.from(serverCloseFrame.getCloseCode()) : null; }
@Override public String toString() { StringBuilder builder = new StringBuilder() .append("WebSocketFrame(FIN=").append(mFin ? "1" : "0") .append(",RSV1=").append(mRsv1 ? "1" : "0") .append(",RSV2=").append(mRsv2 ? "1" : "0") .append(",RSV3=").append(mRsv3 ? "1" : "0") .append(",Opcode=").append(Misc.toOpcodeName(mOpcode)) .append(",Length=").append(getPayloadLength()); switch (mOpcode) { case TEXT: appendPayloadText(builder); break; case BINARY: appendPayloadBinary(builder); break; case CLOSE: appendPayloadClose(builder); break; } return builder.append(")").toString(); }
@Override public void onFrameSent(WebSocket webSocket, WebSocketFrame webSocketFrame) throws Exception { int opCode = new JSONObject(webSocketFrame.getPayloadText()).getInt("op"); String type = Thread.currentThread().getName().contains("AudioWS") ? "voice" : "web"; String name = type.equals("voice") ? WebSocketCodes.AudioCodes.AUDIO_SOCKET_CODES.get(opCode).name() : WebSocketCodes.WEB_SOCKET_CODES.get(opCode).name(); Metrics.websocketEvents.labels( String.valueOf(opCode), name, type ).inc(); }
/** * Send a text message to the server. * * <p> * This method is an alias of {@link #sendFrame(WebSocketFrame) * sendFrame}{@code (WebSocketFrame.}{@link * WebSocketFrame#createTextFrame(String) * createTextFrame}{@code (message))}. * </p> * * <p> * If you want to send a text frame that is to be followed by * continuation frames, use {@link #sendText(String, boolean) * setText(String payload, boolean fin)} with {@code fin=false}. * </p> * * @param message * A text message to be sent to the server. * * @return * {@code this} object. */ public WebSocket sendText(String message) { return sendFrame(WebSocketFrame.createTextFrame(message)); }
return new WebSocketFrame() .setFin(fin) .setRsv1(rsv1) .setRsv2(rsv2) .setRsv3(rsv3) .setOpcode(opcode) .setMask(mask) .setPayload(payload);
/** * Create a text frame. * * @param payload * The payload for a newly created frame. * * @return * A WebSocket frame whose FIN bit is true, opcode is * {@link WebSocketOpcode#TEXT TEXT} and payload is * the given one. */ public static WebSocketFrame createTextFrame(String payload) { return new WebSocketFrame() .setFin(true) .setOpcode(TEXT) .setPayload(payload); }
/** * Create a ping frame. * * @return * A WebSocket frame whose FIN bit is true, opcode is * {@link WebSocketOpcode#PING PING} and payload is * {@code null}. */ public static WebSocketFrame createPingFrame() { return new WebSocketFrame() .setFin(true) .setOpcode(PING); }
int code = closeFrame.getCloseCode(); return WebSocketCloseCode.fromCode(code) .map(closeCode -> closeCode + " (" + code + ")")
@Override public String toString() { StringBuilder builder = new StringBuilder() .append("WebSocketFrame(FIN=").append(mFin ? "1" : "0") .append(",RSV1=").append(mRsv1 ? "1" : "0") .append(",RSV2=").append(mRsv2 ? "1" : "0") .append(",RSV3=").append(mRsv3 ? "1" : "0") .append(",Opcode=").append(Misc.toOpcodeName(mOpcode)) .append(",Length=").append(getPayloadLength()); switch (mOpcode) { case TEXT: appendPayloadText(builder); break; case BINARY: appendPayloadBinary(builder); break; case CLOSE: appendPayloadClose(builder); break; } return builder.append(")").toString(); }
@Override public void onFrame(WebSocket websocket, WebSocketFrame frame) throws Exception { if (frame.getPayloadText().equalsIgnoreCase("#1")) { } else { JSONObject object = new JSONObject(frame.getPayloadText());
/** * Sends the heartbeat. * * @param websocket The websocket the heartbeat should be sent to. */ private void sendHeartbeat(WebSocket websocket) { ObjectNode heartbeatPacket = JsonNodeFactory.instance.objectNode(); heartbeatPacket.put("op", GatewayOpcode.HEARTBEAT.getCode()); heartbeatPacket.put("d", lastSeq); WebSocketFrame heartbeatFrame = WebSocketFrame.createTextFrame(heartbeatPacket.toString()); nextHeartbeatFrame.set(heartbeatFrame); websocket.sendFrame(heartbeatFrame); }
/** * Create a continuation frame. Note that the FIN bit of the * returned frame is false. * * @return * A WebSocket frame whose FIN bit is false, opcode is * {@link WebSocketOpcode#CONTINUATION CONTINUATION} and * payload is {@code null}. */ public static WebSocketFrame createContinuationFrame() { return new WebSocketFrame() .setOpcode(CONTINUATION); }
if (serverCloseFrame != null) LOG.debug("Reason: {}\nClose code: {}", serverCloseFrame.getCloseReason(), serverCloseFrame.getCloseCode()); final int code = serverCloseFrame.getCloseCode(); final VoiceCode.Close closeCode = VoiceCode.Close.from(code); switch (closeCode) LOG.debug("ClientReason: {}\nClientCode: {}", clientCloseFrame.getCloseReason(), clientCloseFrame.getCloseCode()); if (clientCloseFrame.getCloseCode() != 1000)