TooTallNate/Java-WebSocket · error · LimitExceededException
Payload limit reached.
Error message
Payload limit reached.
What it means
translateSingleFrameCheckLengthLimit throws LimitExceededException("Payload limit reached.", maxFrameSize) when a frame's payload length exceeds the configured maxFrameSize of the Draft_6455 instance. This is the library's built-in defense against oversized frames.
Solutions
- Increase maxFrameSize on the draft: draft.setMaxFrameSize(desiredLimit) on both sides consistently
- Fragment large messages into multiple frames each within the limit
- Catch LimitExceededException and close with code 1009 (message too big) instead of crashing
- Align client and server frame/message size configuration
Example fix
// before Draft_6455 draft = new Draft_6455(); // default maxFrameSize, big frames rejected // after Draft_6455 draft = new Draft_6455(); draft.setMaxFrameSize(8 * 1024 * 1024); // allow up to 8 MiB frames
Defensive patterns
Strategy: validation
Validate before calling
// ensure sender payload fits the receiver's configured limit
if (Charsetfunctions.utf8Bytes(message).length > maxFrameSize) {
throw new IllegalArgumentException("Message exceeds maxFrameSize=" + maxFrameSize);
} Try / catch
try {
conn.send(message);
} catch (WebsocketNotConnectedException e) {
// connection gone
} catch (IllegalArgumentException e) {
log.error("Frame size limit: {}", e.getMessage());
} Prevention
- Configure matching maxFrameSize on client and server
- Document your frame-size limit in the peer-facing API contract
- Chunk large payloads at the application level instead of enlarging limits unbounded
When it happens
Trigger: Incoming frame length (after decoding 126/127 length forms) exceeds maxFrameSize set via setMaxFrameSize() (default Integer.MAX_VALUE); called from translateSingleFrame and translateSingleFramePayloadLength.
Common situations: Server configured with a small maxFrameSize (e.g. 1 MiB) receiving larger frames from clients; a client raised its send size but the server limit was not updated; large message framing instead of fragmenting.
Understand the failure class
Background: payload too large / request exceeds maximum size: why libraries cap bytes and how to fix oversize payloads — this error's family across 50 libraries.
Related errors
- buffer size < 0
- Payloadsize is to big...
- Payloadsize is to little...
- parameter must not be null
- Invalid SSL status:
AI-assisted analysis of TooTallNate/Java-WebSocket@afeacbf8c0 (2026-09-09).
Data as JSON: /api/errors/7fe53570f2a9daa7.
Report an issue: GitHub.
Appendix: source
Thrown at src/main/java/org/java_websocket/drafts/Draft_6455.java:655
payloadlength = (int) length;
}
return new TranslatedPayloadMetaData(payloadlength, realpacketsize);
}
/**
* Check if the frame size exceeds the allowed limit
*
* @param length the current payload length
* @throws LimitExceededException if the payload length is to big
*/
private void translateSingleFrameCheckLengthLimit(long length) throws LimitExceededException {
if (length > Integer.MAX_VALUE) {
log.trace("Limit exedeed: Payloadsize is to big...");
throw new LimitExceededException("Payloadsize is to big...");
}
if (length > maxFrameSize) {
log.trace("Payload limit reached. Allowed: {} Current: {}", maxFrameSize, length);
throw new LimitExceededException("Payload limit reached.", maxFrameSize);
}
if (length < 0) {
log.trace("Limit underflow: Payloadsize is to little...");
throw new LimitExceededException("Payloadsize is to little...");
}
}
/**
* Check if the max packet size is smaller than the real packet size
*
* @param maxpacketsize the max packet size
* @param realpacketsize the real packet size
* @throws IncompleteException if the maxpacketsize is smaller than the realpackagesize
*/
private void translateSingleFrameCheckPacketSize(int maxpacketsize, int realpacketsize)
throws IncompleteException {
if (maxpacketsize < realpacketsize) {
log.trace("Incomplete frame: maxpacketsize < realpacketsize");View on GitHub (pinned to afeacbf8c0)