Как проанализировать и проверить фрейм WebSocket в Java?
Я написал фрейм-декодер WebSocket на Java:
private byte[] decodeFrame(byte[] _rawIn) {
int maskIndex = 2;
byte[] maskBytes = new byte[4];
if ((_rawIn[1] & (byte) 127) == 126) {
maskIndex = 4;
} else if ((_rawIn[1] & (byte) 127) == 127) {
maskIndex = 10;
}
System.arraycopy(_rawIn, maskIndex, maskBytes, 0, 4);
byte[] message = new byte[_rawIn.length - maskIndex - 4];
for (int i = maskIndex + 4; i < _rawIn.length; i++) {
message[i - maskIndex - 4] = (byte) (_rawIn[i] ^ maskBytes[(i - maskIndex - 4) % 4]);
}
return message;
}
Это работает, но я понятия не имею, как проверить кадр, чтобы убедиться, что он декодирует только допустимые кадры.
Описание протоколаhttp://tools.ietf.org/html/rfc6455
к сожалению, мало что говорит о проверке кадров.