{
"title": "WebSocket Message Structure",
"description": "Structure documentation for a WebSocket message as defined by RFC 6455. A message is composed of one or more frames with the same opcode.",
"type": "object",
"fields": [
{
"name": "opcode",
"type": "integer",
"required": true,
"description": "Frame opcode: 0=continuation, 1=text, 2=binary, 8=close, 9=ping, 10=pong"
},
{
"name": "fin",
"type": "boolean",
"required": true,
"description": "Final frame flag — true if this is the last fragment of a message"
},
{
"name": "masked",
"type": "boolean",
"required": true,
"description": "Whether the payload is masked (required for client-to-server messages)"
},
{
"name": "payloadLength",
"type": "integer",
"required": true,
"description": "Length of the payload in bytes (7-bit, 16-bit, or 64-bit value)"
},
{
"name": "maskingKey",
"type": "string",
"required": false,
"description": "4-byte masking key (present only when masked=true)"
},
{
"name": "payload",
"type": "string",
"required": false,
"description": "Frame payload data (UTF-8 text for text frames, binary for binary frames)"
},
{
"name": "rsv1",
"type": "boolean",
"required": false,
"description": "Reserved bit 1 — used by extensions (e.g., permessage-deflate)"
},
{
"name": "rsv2",
"type": "boolean",
"required": false,
"description": "Reserved bit 2 — reserved for future use"
},
{
"name": "rsv3",
"type": "boolean",
"required": false,
"description": "Reserved bit 3 — reserved for future use"
}
]
}